function(GETTEXT_PROCESS_PO_FILES _lang) set(_options ALL) set(_oneValueArgs INSTALL_DESTINATION) set(_multiValueArgs PO_FILES) set(_gmoFiles) CMAKE_PARSE_ARGUMENTS(_parsedArguments "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) foreach(_current_PO_FILE ${_parsedArguments_PO_FILES}) get_filename_component(_name ${_current_PO_FILE} NAME) string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name}) set(_basenameMAJOR ${_basename}-${MAJOR}) set(installDIR ${CMAKE_BINARY_DIR}/share/locale/${_lang}/LC_MESSAGES) file(MAKE_DIRECTORY ${installDIR}) set(_gmoFile ${installDIR}/${_basenameMAJOR}.mo) add_custom_command(OUTPUT ${_gmoFile} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" DEPENDS ${_current_PO_FILE} ) if(_parsedArguments_INSTALL_DESTINATION) install(FILES ${installDIR}/${_basenameMAJOR}.mo DESTINATION ${_parsedArguments_INSTALL_DESTINATION}/${_lang}/LC_MESSAGES/) endif() list(APPEND _gmoFiles ${_gmoFile}) endforeach() if(NOT TARGET pofiles) add_custom_target(pofiles) endif() _GETTEXT_GET_UNIQUE_TARGET_NAME( pofiles uniqueTargetName) if(_parsedArguments_ALL) add_custom_target(${uniqueTargetName} ALL DEPENDS ${_gmoFiles}) else() add_custom_target(${uniqueTargetName} DEPENDS ${_gmoFiles}) endif() add_dependencies(pofiles ${uniqueTargetName}) endfunction()