summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2022-02-16 10:19:33 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-16 19:32:52 +0000
commitfcb679fda3cabd74287fe6e38a62612894d20aa6 (patch)
treeac250e2ee84942e5d898228942b0aaf027514796
parenta64dbe92b622b386954a39ec82c521ac3627e084 (diff)
CMake: Fix qt_create_translation to not remove .ts files on "clean"
When running "make clean", .ts files were deleted. This must not happen, because .ts files are source files. Remove the .ts file from the OUTPUT of the custom command that updates the .ts file. Add a timestamp file instead that is touched upon updating the .ts file. In qt_add_translation we must depend on this timestamp file. If users call qt_add_translation, we don't depend on a timestamp file but directly on the .ts file like before. Fixes: QTBUG-96549 Change-Id: If93a6d1b47a33b29dc92fb987da2afcf8d29e895 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 153db2fedc5935d858d3adeb283ced5e4de5babf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/linguist/Qt6LinguistToolsMacros.cmake23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/linguist/Qt6LinguistToolsMacros.cmake b/src/linguist/Qt6LinguistToolsMacros.cmake
index f0d99dd4d..d0a37f71a 100644
--- a/src/linguist/Qt6LinguistToolsMacros.cmake
+++ b/src/linguist/Qt6LinguistToolsMacros.cmake
@@ -64,11 +64,15 @@ function(qt6_create_translation _qm_files)
list(APPEND _my_sources ${_abs_FILE})
endif()
endforeach()
+ set(stamp_file_dir "${CMAKE_CURRENT_BINARY_DIR}/.lupdate")
+ if(NOT EXISTS "${stamp_file_dir}")
+ file(MAKE_DIRECTORY "${stamp_file_dir}")
+ endif()
foreach(_ts_file ${_my_tsfiles})
+ get_filename_component(_ts_name ${_ts_file} NAME)
if(_my_sources)
# make a list file to call lupdate on, so we don't make our commands too
# long for some systems
- get_filename_component(_ts_name ${_ts_file} NAME)
set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")
set(_lst_file_srcs)
set(_dependencies)
@@ -91,18 +95,20 @@ function(qt6_create_translation _qm_files)
file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
endif()
- add_custom_command(OUTPUT ${_ts_file}
+ set(stamp_file "${stamp_file_dir}/${_ts_name}.stamp")
+ add_custom_command(OUTPUT ${stamp_file}
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::lupdate
ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
+ COMMAND ${CMAKE_COMMAND} -E touch "${stamp_file}"
DEPENDS ${_dependencies}
VERBATIM)
endforeach()
- qt6_add_translation(${_qm_files} ${_my_tsfiles})
+ qt6_add_translation(${_qm_files} __QT_INTERNAL_DEPEND_ON_TIMESTAMP_FILE ${_my_tsfiles})
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()
function(qt6_add_translation _qm_files)
- set(options)
+ set(options __QT_INTERNAL_DEPEND_ON_TIMESTAMP_FILE)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
@@ -112,6 +118,7 @@ function(qt6_add_translation _qm_files)
foreach(_current_FILE ${_lrelease_files})
get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
get_filename_component(qm ${_abs_FILE} NAME)
+ set(ts_stamp_file "${CMAKE_CURRENT_BINARY_DIR}/.lupdate/${qm}.stamp")
# everything before the last dot has to be considered the file name (including other dots)
string(REGEX REPLACE "\\.[^.]*$" "" FILE_NAME ${qm})
get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION)
@@ -122,10 +129,16 @@ function(qt6_add_translation _qm_files)
set(qm "${CMAKE_CURRENT_BINARY_DIR}/${FILE_NAME}.qm")
endif()
+ if(_LRELEASE___QT_INTERNAL_DEPEND_ON_TIMESTAMP_FILE)
+ set(qm_dep "${ts_stamp_file}")
+ else()
+ set(qm_dep "${_abs_FILE}")
+ endif()
+
add_custom_command(OUTPUT ${qm}
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::lrelease
ARGS ${_LRELEASE_OPTIONS} ${_abs_FILE} -qm ${qm}
- DEPENDS ${_abs_FILE} VERBATIM
+ DEPENDS ${qm_dep} VERBATIM
)
list(APPEND ${_qm_files} ${qm})
endforeach()