From: Manuel Nickschas Date: Thu, 2 Aug 2018 23:11:08 +0000 (+0200) Subject: cmake: Modernize use of Qt Linguist Tools X-Git-Tag: test-travis-01~172 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=18746a803a6cf040c6525f8916bb721c1edbce1f;ds=sidebyside cmake: Modernize use of Qt Linguist Tools All Qt versions we support provide an alias target for the linguist tools. Thus, remove the fallback for older Qt versions. Use the LOCATION property of the tools' target instead of relying on the corresponding QT_L*_EXECUTABLE variables. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c162ec4f..d9dc2a83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -333,25 +333,6 @@ set_package_properties(Qt5LinguistTools PROPERTIES TYPE RECOMMENDED PURPOSE "Required for having translations" ) -# Some Qt5 versions do not define a target for lconvert, so we need to find it ourselves -if (Qt5LinguistTools_FOUND) - if (NOT TARGET Qt5::lconvert AND TARGET Qt5::lrelease) - get_target_property(_lrelease_location Qt5::lrelease LOCATION) - get_filename_component(_lrelease_path ${_lrelease_location} PATH) - find_program(QT_LCONVERT_EXECUTABLE NAMES lconvert-qt5 lconvert PATHS ${_lrelease_path} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - elseif(TARGET Qt5::lconvert AND NOT Qt5_LCONVERT_EXECUTABLE) - # Newer Qt5 versions define the target, but not the Qt5_LCONVERT_EXECUTABLE variable for some reason - get_target_property(QT_LCONVERT_EXECUTABLE Qt5::lconvert LOCATION) - endif() - - # Compatibility with the Qt4 variables - set(QT_LRELEASE_EXECUTABLE ${Qt5_LRELEASE_EXECUTABLE}) - set(QT_LUPDATE_EXECUTABLE ${Qt5_LUPDATE_EXECUTABLE}) - if (Qt5_LCONVERT_EXECUTABLE) - set(QT_LCONVERT_EXECUTABLE ${Qt5_LCONVERT_EXECUTABLE}) - endif() -endif() - # Non-Qt-based packages find_package(ZLIB REQUIRED) @@ -461,8 +442,6 @@ if (NOT WIN32) add_feature_info("syslog.h" HAVE_SYSLOG "Provide support for logging to the syslog") endif() -add_feature_info("Qt Linguist Tools" QT_LCONVERT_EXECUTABLE "Translation support for Quassel") - if (EMBED_DATA) message(STATUS "Embedding data files into the binary") else() diff --git a/cmake/QuasselMacros.cmake b/cmake/QuasselMacros.cmake index 85128660..08eaaa8c 100644 --- a/cmake/QuasselMacros.cmake +++ b/cmake/QuasselMacros.cmake @@ -52,13 +52,13 @@ macro(generate_ts outvar basename) set(input ${basename}.po) set(output ${CMAKE_BINARY_DIR}/po/${basename}.ts) add_custom_command(OUTPUT ${output} - COMMAND ${QT_LCONVERT_EXECUTABLE} + COMMAND $ ARGS -i ${input} -of ts -o ${output} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po # This is a workaround to add (duplicate) strings that lconvert missed to the .ts - COMMAND ${QT_LUPDATE_EXECUTABLE} + COMMAND $ ARGS -silent ${CMAKE_SOURCE_DIR}/src/ -ts ${output} @@ -71,7 +71,7 @@ macro(generate_qm outvar basename) set(input ${CMAKE_BINARY_DIR}/po/${basename}.ts) set(output ${CMAKE_BINARY_DIR}/po/${basename}.qm) add_custom_command(OUTPUT ${output} - COMMAND ${QT_LRELEASE_EXECUTABLE} + COMMAND $ ARGS -silent ${input} DEPENDS ${basename}.ts) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index cac949c7..1d95aa62 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,7 +1,7 @@ # Generate and add translations # The LINGUAS variable can be used to limit that set -if(QT_LCONVERT_EXECUTABLE) +if (TARGET Qt5::lconvert) # get environment variable for translations set(LINGUAS "$ENV{LINGUAS}") string(REGEX REPLACE "[ \t]+" \; output "${LINGUAS}")