2012-05-09 11 views
3

私はGNOMEアプリケーションを作成していますが、CMakeを使っています。今では、GNUがintltoolgettextmsgfmtなどを提供しているアプリケーションを翻訳可能にすることを検討しています。autotoolsは、これらのツールとi18nプロセス全体をそのまま使用できます。cmakeでintltoolを使用する

どのように私はこれをCMakeで使うことができますか?コードのモジュールやスニペットはありますか?

答えて

2

今日では、一緒にCMakeのでintltoolgettextを使用する最良の方法は、最初にある、モジュールはシステムとセットに存在しているかどうかを検出このようないくつかの変数:次に

# Setting up Intl 
find_package (Intl REQUIRED) 
find_package(Gettext REQUIRED) 
include_directories(${INTL_INCLUDE_DIRS}) 
link_directories(${INTL_LIBRARY_DIRS}) 

、あなたがこのようなpoファイル::

FIND_PROGRAM(GETTEXT_MSGFMT_EXECUTABLE msgfmt) 

IF(NOT GETTEXT_MSGFMT_EXECUTABLE) 
    MESSAGE("------ 
    NOTE: msgfmt not found. Translations will *not* be installed 
------") 
ELSE(NOT GETTEXT_MSGFMT_EXECUTABLE) 

    SET(catalogname rkward) 

    FILE(GLOB PO_FILES *.po) 
    SET(GMO_FILES) 

    FOREACH(_poFile ${PO_FILES}) 
    GET_FILENAME_COMPONENT(_poFileName ${_poFile} NAME) 
    STRING(REGEX REPLACE "^${catalogname}_?" "" _langCode ${_poFileName}) 
    STRING(REGEX REPLACE "\\.po$" "" _langCode ${_langCode}) 

    IF(_langCode) 
     GET_FILENAME_COMPONENT(_lang ${_poFile} NAME_WE) 
     SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) 

     ADD_CUSTOM_COMMAND(OUTPUT ${_gmoFile} 
     COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_gmoFile} ${_poFile} 
     DEPENDS ${_poFile}) 
     INSTALL(FILES ${_gmoFile} DESTINATION ${LOCALE_INSTALL_DIR}/${_langCode}/LC_MESSAGES/ RENAME ${catalogname}.mo) 
     LIST(APPEND GMO_FILES ${_gmoFile}) 
    ENDIF(_langCode) 

    ENDFOREACH(_poFile ${PO_FILES}) 

    ADD_CUSTOM_TARGET(translations ALL DEPENDS ${GMO_FILES}) 

ENDIF(NOT GETTEXT_MSGFMT_EXECUTABLE) 
0を構築することができます
1

Remmina gettextのサポートを持っているようだとCMakeのを使用している:

関連する問題