1cmake_minimum_required(VERSION 2.6) 2 3set (XGETTEXT_OPTIONS --qt --keyword=tr:1,2c --keyword=tr --flag=tr:1:pass-c-format --flag=tr:1:pass-qt-format 4 --keyword=trUtf8 --flag=tr:1:pass-c-format --flag=tr:1:pass-qt-format 5 --keyword=translate:2,3c --keyword=translate:2 --flag=translate:2:pass-c-format --flag=translate:2:pass-qt-format 6 --keyword=QT_TR_NOOP --flag=QT_TR_NOOP:1:pass-c-format --flag=QT_TR_NOOP:1:pass-qt-format 7 --keyword=QT_TRANSLATE_NOOP:2 --flag=QT_TRANSLATE_NOOP:2:pass-c-format --flag=QT_TRANSLATE_NOOP:2:pass-qt-format 8 --keyword=_ --flag=_:1:pass-c-format --flag=_:1:pass-qt-format 9 --keyword=N_ --flag=N_:1:pass-c-format --flag=N_:1:pass-qt-format 10 --from-code=utf-8) 11 12macro(add_pot outfiles header pot) 13 # Make relative filenames for all source files 14 set(add_pot_sources) 15 foreach(_filename ${ARGN}) 16 get_filename_component(_absolute_filename ${_filename} ABSOLUTE) 17 file(RELATIVE_PATH _relative_filename ${CMAKE_CURRENT_SOURCE_DIR} ${_absolute_filename}) 18 list(APPEND add_pot_sources ${_relative_filename}) 19 endforeach(_filename) 20 21 # Generate the .pot 22 add_custom_command( 23 OUTPUT ${pot} 24 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 25 COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} 26 ${XGETTEXT_OPTIONS} -s -C --omit-header 27 --output=${CMAKE_CURRENT_BINARY_DIR}/pot.temp 28 ${add_pot_sources} 29 COMMAND cat ${header} ${CMAKE_CURRENT_BINARY_DIR}/pot.temp > ${pot} 30 DEPENDS ${add_pot_sources} ${header} 31 ) 32 33 list(APPEND ${outfiles} ${pot}) 34endmacro(add_pot) 35 36# Syntax is: 37# add_po(sources_var po_prefix 38# LANGUAGES language1 language2 ... 39# DIRECTORY dir 40# 41macro(add_po outfiles po_prefix) 42 parse_arguments(ADD_PO 43 "LANGUAGES;DIRECTORY" 44 "" 45 ${ARGN} 46 ) 47 48 foreach (_lang ${ADD_PO_LANGUAGES}) 49 set(_po_filename "${_lang}.po") 50 set(_po_filepath "${CMAKE_CURRENT_SOURCE_DIR}/${ADD_PO_DIRECTORY}/${_po_filename}") 51 set(_qm_filename "clementine_${_lang}.qm") 52 set(_qm_filepath "${CMAKE_CURRENT_BINARY_DIR}/${ADD_PO_DIRECTORY}/${_qm_filename}") 53 54 # Convert the .po files to .qm files 55 add_custom_command( 56 OUTPUT ${_qm_filepath} 57 COMMAND ${QT_LCONVERT_EXECUTABLE} ARGS ${_po_filepath} -o ${_qm_filepath} -of qm 58 DEPENDS ${_po_filepath} ${_po_filepath} 59 ) 60 61 list(APPEND ${outfiles} ${_qm_filepath}) 62 endforeach (_lang) 63 64 # Generate a qrc file for the translations 65 set(_qrc ${CMAKE_CURRENT_BINARY_DIR}/${ADD_PO_DIRECTORY}/translations.qrc) 66 file(WRITE ${_qrc} "<RCC><qresource prefix=\"/${ADD_PO_DIRECTORY}\">") 67 foreach(_lang ${ADD_PO_LANGUAGES}) 68 file(APPEND ${_qrc} "<file>${po_prefix}${_lang}.qm</file>") 69 endforeach(_lang) 70 file(APPEND ${_qrc} "</qresource></RCC>") 71 qt5_add_resources(${outfiles} ${_qrc}) 72endmacro(add_po) 73