From 64f36300fb8685d6285095ca64d0f383ecc54a95 Mon Sep 17 00:00:00 2001 From: Guillaume LE VAILLANT Date: Tue, 9 Jan 2018 10:35:14 +0100 Subject: [PATCH] Check if lrelease is working before trying to use it On some systems, there is a /usr/bin/lrelease wrapper even if the real lrelease program is not installed. So let's try to execute lrelease after it has been found by find_program to see if it is really working. --- translations/CMakeLists.txt | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt index 36b72d68a..d96326ae0 100644 --- a/translations/CMakeLists.txt +++ b/translations/CMakeLists.txt @@ -35,14 +35,21 @@ if(LRELEASE STREQUAL "LRELEASE-NOTFOUND") set(ts_files "") message(WARNING "lrelease program not found, translation files not built") else() - file(GLOB ts_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.ts) - foreach(ts_file ${ts_files}) - string(REPLACE ".ts" ".qm" qm_file "${ts_file}") - add_custom_command(TARGET generate_translations_header - PRE_BUILD - COMMAND ${LRELEASE} "${CMAKE_CURRENT_SOURCE_DIR}/${ts_file}" -qm "${qm_file}" - WORKING_DIRECTORY "${CMAKE_CURRENT_BIN_DIR}") - endforeach() + execute_process(COMMAND ${LRELEASE} -version + RESULT_VARIABLE lrelease_ret) + if(NOT lrelease_ret EQUAL "0") + set(ts_files "") + message(WARNING "lrelease program not working, translation files not built") + else() + file(GLOB ts_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.ts) + foreach(ts_file ${ts_files}) + string(REPLACE ".ts" ".qm" qm_file "${ts_file}") + add_custom_command(TARGET generate_translations_header + PRE_BUILD + COMMAND ${LRELEASE} "${CMAKE_CURRENT_SOURCE_DIR}/${ts_file}" -qm "${qm_file}" + WORKING_DIRECTORY "${CMAKE_CURRENT_BIN_DIR}") + endforeach() + endif() endif() string(REPLACE ".ts" ".qm" qm_files "${ts_files}")