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.
This commit is contained in:
Guillaume LE VAILLANT 2018-01-09 10:35:14 +01:00
parent a529f0a6c9
commit 64f36300fb

View File

@ -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}")