summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorClinton Stimpson <clinton@elemtech.com>2008-01-22 15:11:29 (GMT)
committerClinton Stimpson <clinton@elemtech.com>2008-01-22 15:11:29 (GMT)
commiteba50323891aea422a590dfd4508237cefada48e (patch)
treefb8e6e766a739631f4a031e31f428c47536942af /Modules
parentceb716575e837c35747d78caafec9f38fb7da347 (diff)
downloadCMake-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.cmake72
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)
+
+
+
######################################