diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-06-11 11:55:16 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-15 12:55:13 +0000 |
commit | c0b030ef36d93081664993a4c8448100a1b6d0ce (patch) | |
tree | 3637074096149fe42bc5ffcc9434ff2532c7b81c /tests | |
parent | a9508a4e64847cc0ac1b7c8aa56a6dd109912a14 (diff) |
CMake translation API: Add way to get hold of generated .qm files
Add the argument QM_FILES_OUTPUT_VARIABLE to qt6_add_lrelease and
qt6_add_translations to extract the paths of generated .qm files. That
is needed to be able to further process these files.
Example usage:
qt6_add_lupdate(myapp TS_FILES foo_de.ts)
qt6_add_lrelease(myapp
QM_FILES_OUTPUT_VARIABLE qm_files
TS_FILES foo_de.ts)
install(FILES "${qm_files}" DESTINATION "translations")
or
qt6_add_translations(myapp TS_FILES foo_de.ts
QM_FILES_OUTPUT_VARIABLE qm_files)
install(FILES "${qm_files}" DESTINATION "translations")
Change-Id: I88622e8fe2fd76943d868340214739a3f1249a85
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 1197f8e5467b6785ba3d6accb68cb4410356c373)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/cmake/test_translation_api/CMakeLists.txt | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/tests/auto/cmake/test_translation_api/CMakeLists.txt b/tests/auto/cmake/test_translation_api/CMakeLists.txt index 8bd69f9fe..0eed093ad 100644 --- a/tests/auto/cmake/test_translation_api/CMakeLists.txt +++ b/tests/auto/cmake/test_translation_api/CMakeLists.txt @@ -26,6 +26,29 @@ function(not_expect_target target) endif() endfunction() +function(expect_files_in_list list_var) + set(file_names "") + foreach(path IN LISTS "${list_var}") + get_filename_component(file_name "${path}" NAME) + list(APPEND file_names "${file_name}") + endforeach() + set(found_file_names "") + foreach(expected_file_name IN LISTS ARGN) + list(FIND file_names "${expected_file_name}" idx) + if(idx EQUAL -1) + message(FATAL_ERROR "Expected file name '${expected_file_name}' is not in " + "'${list_var}'. Its value is '${${list_var}}'.") + endif() + list(APPEND found_file_names "${expected_file_name}") + endforeach() + list(REMOVE_ITEM file_names ${found_file_names}) + list(LENGTH file_names n) + if(NOT n EQUAL 0) + message(FATAL_ERROR "Unexpected file names in '${list_var}': ${file_names}\n" + "Value of '${list_var}' is '${${list_var}}'.") + endif() +endfunction() + # Test NO_GLOBAL_TARGET for lupdate. create_app(app1) qt6_add_lupdate(app1 @@ -40,11 +63,13 @@ not_expect_target(release_translations) create_app(app2) qt6_add_lrelease(app2 NO_GLOBAL_TARGET - TS_FILES myobject_de.ts myobject_en.ts) + TS_FILES myobject_de.ts myobject_en.ts + QM_FILES_OUTPUT_VARIABLE qm_files) not_expect_target(app2_lupdate) expect_target(app2_lrelease) not_expect_target(update_translations) not_expect_target(release_translations) +expect_files_in_list(qm_files myobject_de.qm myobject_en.qm) # Typical usage of qt_add_lupdate/qt_add_lrelease. Pass some options for good measure. create_app(app3) @@ -53,20 +78,24 @@ qt6_add_lupdate(app3 OPTIONS -source-language en_US) qt6_add_lrelease(app3 TS_FILES myobject_no.ts myobject_fi.ts - OPTIONS -compress) + OPTIONS -compress + QM_FILES_OUTPUT_VARIABLE qm_files) expect_target(app3_lupdate) expect_target(app3_lrelease) expect_target(release_translations) +expect_files_in_list(qm_files myobject_no.qm myobject_fi.qm) # Now do the same with qt6_add_translations. create_app(app4) qt6_add_translations(app4 TS_FILES myobject_no.ts myobject_fi.ts + QM_FILES_OUTPUT_VARIABLE qm_files LUPDATE_OPTIONS -source-language en_US LRELEASE_OPTIONS -compress) expect_target(app4_lupdate) expect_target(app4_lrelease) expect_target(release_translations) +expect_files_in_list(qm_files myobject_no.qm myobject_fi.qm) # Build the update_translations target add_custom_target(my_all_target |