summaryrefslogtreecommitdiffstats
path: root/src/linguist/Qt6LinguistToolsMacros.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'src/linguist/Qt6LinguistToolsMacros.cmake')
-rw-r--r--src/linguist/Qt6LinguistToolsMacros.cmake23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/linguist/Qt6LinguistToolsMacros.cmake b/src/linguist/Qt6LinguistToolsMacros.cmake
index c992bfa41..123048139 100644
--- a/src/linguist/Qt6LinguistToolsMacros.cmake
+++ b/src/linguist/Qt6LinguistToolsMacros.cmake
@@ -39,6 +39,7 @@ function(qt6_create_translation _qm_files)
if(NOT EXISTS "${stamp_file_dir}")
file(MAKE_DIRECTORY "${stamp_file_dir}")
endif()
+ set(stamp_files "")
foreach(_ts_file ${_my_tsfiles})
get_filename_component(_ts_name ${_ts_file} NAME)
if(_my_sources)
@@ -66,7 +67,14 @@ function(qt6_create_translation _qm_files)
file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
endif()
- set(stamp_file "${stamp_file_dir}/${_ts_name}.stamp")
+ file(RELATIVE_PATH _ts_relative_path ${CMAKE_CURRENT_SOURCE_DIR} ${_ts_file})
+ string(REPLACE "../" "__/" _ts_relative_path "${_ts_relative_path}")
+ set(stamp_file "${stamp_file_dir}/${_ts_relative_path}.stamp")
+ list(APPEND stamp_files ${stamp_file})
+ get_filename_component(full_stamp_file_dir "${stamp_file}" DIRECTORY)
+ if(NOT EXISTS "${full_stamp_file_dir}")
+ file(MAKE_DIRECTORY "${full_stamp_file_dir}")
+ endif()
add_custom_command(OUTPUT ${stamp_file}
COMMAND ${QT_CMAKE_EXPORT_NAMESPACE}::lupdate
ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
@@ -74,22 +82,22 @@ function(qt6_create_translation _qm_files)
DEPENDS ${_dependencies}
VERBATIM)
endforeach()
- qt6_add_translation(${_qm_files} __QT_INTERNAL_DEPEND_ON_TIMESTAMP_FILE ${_my_tsfiles})
+ qt6_add_translation(${_qm_files} ${_my_tsfiles} __QT_INTERNAL_TIMESTAMP_FILES ${stamp_files})
set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
endfunction()
function(qt6_add_translation _qm_files)
- set(options __QT_INTERNAL_DEPEND_ON_TIMESTAMP_FILE)
+ set(options)
set(oneValueArgs)
- set(multiValueArgs OPTIONS)
+ set(multiValueArgs OPTIONS __QT_INTERNAL_TIMESTAMP_FILES)
cmake_parse_arguments(_LRELEASE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(_lrelease_files ${_LRELEASE_UNPARSED_ARGUMENTS})
+ set(idx 0)
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)
@@ -100,8 +108,9 @@ 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}")
+ if(_LRELEASE___QT_INTERNAL_TIMESTAMP_FILES)
+ list(GET _LRELEASE___QT_INTERNAL_TIMESTAMP_FILES ${idx} qm_dep)
+ math(EXPR idx "${idx} + 1")
else()
set(qm_dep "${_abs_FILE}")
endif()