diff options
author | Clinton Stimpson <clinton@elemtech.com> | 2008-01-22 15:11:29 (GMT) |
---|---|---|
committer | Clinton Stimpson <clinton@elemtech.com> | 2008-01-22 15:11:29 (GMT) |
commit | eba50323891aea422a590dfd4508237cefada48e (patch) | |
tree | fb8e6e766a739631f4a031e31f428c47536942af /Modules | |
parent | ceb716575e837c35747d78caafec9f38fb7da347 (diff) | |
download | CMake-eba50323891aea422a590dfd4508237cefada48e.zip CMake-eba50323891aea422a590dfd4508237cefada48e.tar.gz CMake-eba50323891aea422a590dfd4508237cefada48e.tar.bz2 |
ENH: Add macros to handle translations. Fixes #6229.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FindQt4.cmake | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index 849177e..72c6e9d 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -69,6 +69,26 @@ # interface file is constructed from the basename of the header with # the suffix .xml appended. # +# macro QT4_CREATE_TRANSLATION( qm_files sources ... ts_files ... ) +# out: qm_files +# in: sources ts_files +# generates commands to create .ts (vie lupdate) and .qm +# (via lrelease) - files from sources. The ts files are +# created and/or updated in the source tree (unless given with full paths). +# The qm files are generated in the build tree. +# Updating the translations can be done by adding the qm_files +# to the source list of your library/executable, so they are +# always updated, or by adding a custom target to control when +# they get updated/generated. +# +# macro QT4_ADD_TRANSLATION( qm_files ts_files ... ) +# out: qm_files +# in: ts_files +# generates commands to create .qm from .ts - files. The generated +# filenames can be found in qm_files. The ts_files +# must exists and are not updated in any way. +# +# # QT_FOUND If false, don't try to use Qt. # QT4_FOUND If false, don't try to use Qt 4. # @@ -208,6 +228,8 @@ # QT_RCC_EXECUTABLE Where to find the rcc tool # QT_DBUSCPP2XML_EXECUTABLE Where to find the qdbuscpp2xml tool. # QT_DBUSXML2CPP_EXECUTABLE Where to find the qdbusxml2cpp tool. +# QT_LUPDATE_EXECUTABLE Where to find the lupdate tool. +# QT_LRELEASE_EXECUTABLE Where to find the lrelease tool. # # QT_DOC_DIR Path to "doc" of Qt4 # QT_MKSPECS_DIR Path to "mkspecs" of Qt4 @@ -830,6 +852,18 @@ IF (QT4_QMAKE_FOUND) NO_DEFAULT_PATH ) + FIND_PROGRAM(QT_LUPDATE_EXECUTABLE + NAMES lupdate + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH + ) + + FIND_PROGRAM(QT_LRELEASE_EXECUTABLE + NAMES lrelease + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH + ) + IF (QT_MOC_EXECUTABLE) SET(QT_WRAP_CPP "YES") ENDIF (QT_MOC_EXECUTABLE) @@ -1097,6 +1131,44 @@ IF (QT4_QMAKE_FOUND) ENDFOREACH (_current_FILE) ENDMACRO(QT4_AUTOMOC) + MACRO(QT4_CREATE_TRANSLATION _qm_files) + SET(_my_sources) + SET(_my_tsfiles) + FOREACH (_file ${ARGN}) + GET_FILENAME_COMPONENT(_ext ${_file} EXT) + GET_FILENAME_COMPONENT(_abs_FILE ${_file} ABSOLUTE) + IF(_ext MATCHES "ts") + LIST(APPEND _my_tsfiles ${_abs_FILE}) + ELSE(_ext MATCHES "ts") + LIST(APPEND _my_sources ${_abs_FILE}) + ENDIF(_ext MATCHES "ts") + ENDFOREACH(_file) + FOREACH(_ts_file ${_my_tsfiles}) + ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file} + COMMAND ${QT_LUPDATE_EXECUTABLE} + ARGS ${_my_sources} -ts ${_ts_file} + DEPENDS ${_my_sources}) + ENDFOREACH(_ts_file) + QT4_ADD_TRANSLATION(${_qm_files} ${_my_tsfiles}) + ENDMACRO(QT4_CREATE_TRANSLATION) + + MACRO(QT4_ADD_TRANSLATION _qm_files) + FOREACH (_current_FILE ${ARGN}) + GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) + GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE) + SET(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") + + ADD_CUSTOM_COMMAND(OUTPUT ${qm} + COMMAND ${QT_LRELEASE_EXECUTABLE} + ARGS ${_abs_FILE} -qm ${qm} + DEPENDS ${_abs_FILE} + ) + SET(${_qm_files} ${${_qm_files}} ${qm}) + ENDFOREACH (_current_FILE) + ENDMACRO(QT4_ADD_TRANSLATION) + + + ###################################### |