set(TRANSLATIONS "de" "en_US" ) foreach(LANG IN LISTS TRANSLATIONS) set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po") set(BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/${LANG}/LC_MESSAGES/turns.mo") list(APPEND TRANSLATION_BINARIES "${BINARY_FILE}") add_custom_command(OUTPUT "${BINARY_FILE}" COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" ARGS "-o" "${BINARY_FILE}" "${SOURCE_FILE}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" DEPENDS "${SOURCE_FILE}" COMMENT "Processing translation ${LANG}" ) install(FILES "${BINARY_FILE}" DESTINATION "${CMAKE_INSTALL_FULL_LOCALEDIR}/${LANG}/LC_MESSAGES" ) endforeach() add_custom_target("mofiles" DEPENDS ${TRANSLATION_BINARIES}) add_library("lang" INTERFACE) add_library("turns::lang" ALIAS "lang") target_compile_definitions("lang" INTERFACE "LOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"" ) add_dependencies("lang" "mofiles") # Tests add_executable("lang-tests" "tests/translations.cpp" ) target_link_libraries("lang-tests" PRIVATE "Catch2::Catch2" "turns::intl-test-main" ) catch_discover_tests("lang-tests")