summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/linguist/Qt6LinguistToolsMacros.cmake11
-rw-r--r--tests/auto/cmake/test_translation_api/CMakeLists.txt15
2 files changed, 25 insertions, 1 deletions
diff --git a/src/linguist/Qt6LinguistToolsMacros.cmake b/src/linguist/Qt6LinguistToolsMacros.cmake
index 8ed2dc590..aa7bb69c1 100644
--- a/src/linguist/Qt6LinguistToolsMacros.cmake
+++ b/src/linguist/Qt6LinguistToolsMacros.cmake
@@ -286,7 +286,8 @@ function(qt6_add_translations target)
set(options)
set(oneValueArgs
QM_FILES_OUTPUT_VARIABLE
- RESOURCE_PREFIX)
+ RESOURCE_PREFIX
+ OUTPUT_TARGETS)
set(multiValueArgs
TS_FILES
SOURCES
@@ -299,6 +300,10 @@ function(qt6_add_translations target)
message(FATAL_ERROR "QM_FILES_OUTPUT_VARIABLE cannot be specified "
"together with RESOURCE_PREFIX.")
endif()
+ if(DEFINED arg_QM_FILES_OUTPUT_VARIABLE AND DEFINED arg_OUTPUT_TARGETS)
+ message(FATAL_ERROR "OUTPUT_TARGETS cannot be specified "
+ "together with QM_FILES_OUTPUT_VARIABLE.")
+ endif()
if(NOT DEFINED arg_RESOURCE_PREFIX AND NOT DEFINED arg_QM_FILES_OUTPUT_VARIABLE)
set(arg_RESOURCE_PREFIX "/i18n")
endif()
@@ -316,7 +321,11 @@ function(qt6_add_translations target)
qt6_add_resources(${target} "translations"
PREFIX "${arg_RESOURCE_PREFIX}"
BASE "${CMAKE_CURRENT_BINARY_DIR}"
+ OUTPUT_TARGETS out_targets
FILES ${qm_files})
+ if(DEFINED arg_OUTPUT_TARGETS)
+ set("${arg_OUTPUT_TARGETS}" "${out_targets}" PARENT_SCOPE)
+ endif()
endif()
if(NOT "${arg_QM_FILES_OUTPUT_VARIABLE}" STREQUAL "")
set("${arg_QM_FILES_OUTPUT_VARIABLE}" "${qm_files}" PARENT_SCOPE)
diff --git a/tests/auto/cmake/test_translation_api/CMakeLists.txt b/tests/auto/cmake/test_translation_api/CMakeLists.txt
index 09887264f..81321a067 100644
--- a/tests/auto/cmake/test_translation_api/CMakeLists.txt
+++ b/tests/auto/cmake/test_translation_api/CMakeLists.txt
@@ -103,6 +103,21 @@ qt6_add_translations(app5
TS_FILES myobject_ru.ts
RESOURCE_PREFIX "/tränslehschns")
+# qt_add_translations on a static lib with a generated resource and the default resource prefix.
+# Extract the created resource targets.
+add_library(staticlib1 STATIC
+ myi18nobject.cpp)
+target_include_directories(staticlib1
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/some_dir)
+target_link_libraries(staticlib1 PRIVATE Qt6::Core)
+set(staticlib1_resource_targets "")
+qt6_add_translations(staticlib1
+ TS_FILES myobject_da.ts
+ OUTPUT_TARGETS staticlib1_resource_targets)
+if("${staticlib1_resource_targets}" STREQUAL "")
+ message(FATAL_ERROR "staticlib1_resource_targets is empty.")
+endif()
+
# Build the update_translations target
add_custom_target(my_all_target
ALL