set(TRANSLATIONS "de" "de_CH" "en" ) foreach(LANG IN LISTS TRANSLATIONS) set(BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/${LANG}/LC_MESSAGES/turns.mo") set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po") 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") if(TURNS_USE_INSTALLED_TRANSLATIONS) target_compile_definitions("lang" INTERFACE "LOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"" ) else() target_compile_definitions("lang" INTERFACE "LOCALEDIR=\"${CMAKE_CURRENT_BINARY_DIR}\"" ) endif() target_include_directories("lang" INTERFACE "include" ) add_dependencies("lang" "mofiles") # Tests add_executable("lang-tests" "tests/messages.cpp" ) target_link_libraries("lang-tests" PRIVATE "Catch2::Catch2" "turns::intl-test-main" ) catch_discover_tests("lang-tests")