# # VLMC build system # Authors: Ludovic Fauvet # Rohit Yadav # ## RCC file SET(TS_QRC ${CMAKE_SOURCE_DIR}/ts/resources-ts.qrc) IF(NOT QT_LUPDATE_EXECUTABLE) MESSAGE(WARNING "VLMC could not find lupdate. You won't be able to update translations.") ENDIF(NOT QT_LUPDATE_EXECUTABLE) IF(NOT QT_LRELEASE_EXECUTABLE) MESSAGE(WARNING "VLMC could not find lrelease. Your build won't contain translations.") ## Create an empty RCC file FILE(WRITE ${TS_QRC} "") ENDIF(NOT QT_LRELEASE_EXECUTABLE) ## Wraps the supplied .ts files in lrelease commands MACRO(QT4_ADD_TRANSLATIONS outfiles) FILE(WRITE ${TS_QRC} "\n") FOREACH (it ${ARGN}) GET_FILENAME_COMPONENT(it ${it} ABSOLUTE) GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) FILE(APPEND ${TS_QRC} "${outfile}.qm\n") SET(outfile ${CMAKE_SOURCE_DIR}/ts/${outfile}.qm) ADD_CUSTOM_COMMAND( OUTPUT ${outfile} COMMAND ${QT_LRELEASE_EXECUTABLE} ARGS -compress -silent -nounfinished ${it} -qm ${outfile} MAIN_DEPENDENCY ${it} ) SET(${outfiles} ${${outfiles}} ${outfile}) ENDFOREACH(it) FILE(APPEND ${TS_QRC} "") ENDMACRO(QT4_ADD_TRANSLATIONS) ## Set availbale translations file ids here OPTION(LANGUAGES "Using translations") SET(ALL_LANGUAGES ca cs de es fr gl hu it ja nl pl pt ro ru si sk sv ta tr uk zh ) ## Check if user has provided specific LANGS option IF(NOT DEFINED LANGS) SET(LANGUAGES ${ALL_LANGUAGES} CACHE STRING "Using translations" FORCE) ELSE(NOT DEFINED LANGS) IF(NOT LANGS) SET(LANGUAGES "" CACHE STRING "Using translations" FORCE) ELSEIF(LANGS STREQUAL *) SET(LANGUAGES ${ALL_LANGUAGES} CACHE STRING "Using translations" FORCE) ELSE(NOT LANGS) STRING(REGEX MATCHALL [a-zA-Z_]+ langs1 ${LANGS}) SET(LANGUAGES ${langs1} CACHE STRING "Using translations" FORCE) ENDIF(NOT LANGS) ENDIF(NOT DEFINED LANGS) ## Display what translations files will be processed MESSAGE(STATUS "Translations: ${LANGUAGES}") ## Collect all translations files that are to be processed FOREACH(LANGUAGE ${LANGUAGES}) FILE(GLOB temp_TS ${CMAKE_SOURCE_DIR}/ts/vlmc*${LANGUAGE}*.ts) LIST(APPEND vlmc_TS ${temp_TS}) ENDFOREACH() IF(QT_LRELEASE_EXECUTABLE) ## Wraps the collected translations QT4_ADD_TRANSLATIONS(vlmc_QMS ${vlmc_TS}) ## Create a target that runs lrelease for all the .ts files ## "ALL" means that it will be run by default. ADD_CUSTOM_TARGET(translations ALL DEPENDS ${vlmc_QMS}) ENDIF(QT_LRELEASE_EXECUTABLE) IF(QT_LUPDATE_EXECUTABLE) ## Search for all translatable strings in the sources directory FILE(GLOB_RECURSE translate_SRCS ${CMAKE_SOURCE_DIR}/src/*.cpp ${CMAKE_SOURCE_DIR}/src/*.hpp) FILE(GLOB_RECURSE translate_HDRS ${CMAKE_SOURCE_DIR}/src/*.h) FILE(GLOB_RECURSE translate_UIS ${CMAKE_SOURCE_DIR}/src/*.ui) SET(translate_SRCS ${translate_SRCS} ${translate_HDRS} ${translate_UIS}) ## Create a target that runs lupdate for all the sources and UI files ADD_CUSTOM_TARGET(lupdate COMMAND ${QT_LUPDATE_EXECUTABLE} -noobsolete ${translate_SRCS} -ts ${vlmc_TS} ) ENDIF(QT_LUPDATE_EXECUTABLE)