diff --git a/CMLibQtTranslation.cmake b/CMLibQtTranslation.cmake
index fdd33e0..aa11e8e 100644
--- a/CMLibQtTranslation.cmake
+++ b/CMLibQtTranslation.cmake
@@ -24,37 +24,32 @@ function(qt_translation)
set(_ts "${_target}_${_lang}.ts")
set(_qm "${_target}_${_lang}.qm")
list(APPEND _ts_list ${_ts_dir}/${_ts})
- if(NOT EXISTS ${_ts_dir}/${_ts})
- file(WRITE ${_ts_dir}/${_ts} "
-
- ")
+ list(APPEND _l10n_targets "${_target}_l10n_${_lang}")
+ string(APPEND L10N_QRC_BODY "${CMAKE_BINARY_DIR}/${_qm}\n")
+
+ add_custom_target(${_target}_l10n_${_lang}
+ COMMAND ${Qt5_LUPDATE_EXECUTABLE} ${_sources_list} -ts ${_ts_dir}/${_ts} -target-language ${_lang}
+ DEPENDS ${_sources_list})
+
+ if(NOT EXISTS "${_ts_dir}/${_ts}")
+ add_custom_target(${_ts} DEPENDS ${_target}_l10n_${_lang})
+ else()
+ add_custom_target(${_ts} COMMAND echo "Skipping lupdate for ${_ts}")
endif()
- string(APPEND L10N_QRC_BODY
- "${CMAKE_BINARY_DIR}/${_qm}\n")
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${_qm}
COMMAND ${Qt5_LRELEASE_EXECUTABLE}
- ARGS ${_ts_dir}/${_ts} -qm
- ${CMAKE_BINARY_DIR}/${_qm}
- DEPENDS ${_ts_dir}/${_ts})
+ ARGS ${_ts_dir}/${_ts} -qm ${CMAKE_BINARY_DIR}/${_qm}
+ DEPENDS ${_ts})
endforeach()
- add_custom_command(OUTPUT ${_ts_list}
- COMMAND ${Qt5_LUPDATE_EXECUTABLE}
- ARGS ${_sources_list} -ts ${_ts_list}
- DEPENDS ${_sources_list})
-
configure_file(${CMLIB_MODULE_DIR}/qrc/l10n.qrc.in
${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
qt5_add_resources(_qrc ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
- add_custom_target(_qrc_target DEPENDS ${_qrc})
+ add_custom_target(${_target}_qrc DEPENDS ${_qrc})
+ add_custom_target(${_target}_l10n DEPENDS ${_l10n_targets})
- foreach(_lang ${_languages})
- set(_ts "${_target}_${_lang}.ts")
- set(_qm "${_target}_${_lang}.qm")
- endforeach()
-
- add_dependencies(${_target} _qrc_target)
+ add_dependencies(${_target} ${_target}_qrc)
target_sources(${_target} PUBLIC ${_qrc})
endfunction()