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 "") set(ts_files "")
message(WARNING "lrelease program not found, translation files not built") message(WARNING "lrelease program not found, translation files not built")
else() else()
file(GLOB ts_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.ts) execute_process(COMMAND ${LRELEASE} -version
foreach(ts_file ${ts_files}) RESULT_VARIABLE lrelease_ret)
string(REPLACE ".ts" ".qm" qm_file "${ts_file}") if(NOT lrelease_ret EQUAL "0")
add_custom_command(TARGET generate_translations_header set(ts_files "")
PRE_BUILD message(WARNING "lrelease program not working, translation files not built")
COMMAND ${LRELEASE} "${CMAKE_CURRENT_SOURCE_DIR}/${ts_file}" -qm "${qm_file}" else()
WORKING_DIRECTORY "${CMAKE_CURRENT_BIN_DIR}") file(GLOB ts_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.ts)
endforeach() 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() endif()
string(REPLACE ".ts" ".qm" qm_files "${ts_files}") string(REPLACE ".ts" ".qm" qm_files "${ts_files}")