diff options
-rw-r--r-- | src/linguist/Qt6LinguistToolsMacros.cmake | 11 | ||||
-rw-r--r-- | tests/auto/cmake/test_translation_api/CMakeLists.txt | 15 |
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 |