2

ユーザー入力を取得するためにウィンドウをポップアップする必要がある mac os で firebreath プラグインを作成しました (テキスト フィールドと 2 つのボタンのみ)。

これは、テスト用の現在の projectDef.cmake です。

file (GLOB XIB RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
Mac/bundle_template/input.xib
)

# Make sure we can find the 'ibtool' program. If we can NOT find it we
# skip generation of this project
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
    message(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files.      It should have been installed with the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
endif()

# make the compiled nib file to desktop for testing
set (NIBFILE /Users/develop/Desktop/input.nib)

add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD 
    COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text  --compile ${NIBFILE} ${XIB}
    COMMENT "Compiling input.xib")

set (SOURCES
    ${SOURCES}
    ${PLATFORM}
    ${XIB}
)

add_custom_command ブロックは cmake から影響を受けず、プラグイン ターゲットが正常にビルドされたときに nib ファイルはコンパイルされませんが、ibtool はターミナルのコマンド ラインから動作します。

4

2 に答える 2

1

.xib ファイルを .nib ファイルにコンパイルする必要があるようです。これを行う方法の例を次に示します。

http://www.cmake.org/Wiki/CMake:OSX_InterfaceBuilderFiles

基本的に、次のようなことを行います。

# Make sure we can find the 'ibtool' program. If we can NOT find it we
# skip generation of this project
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
    message(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
endif()

set (NIBFILE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/input.nib)

add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD 
    COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text 
            --compile ${NIBFILE} ${XIB}
    COMMENT "Compiling input.xib")

set (SOURCES
    ${SOURCES}
    ${PLATFORM}
    ${XIB}
    ${NIBFILE}
)

set_source_files_properties(${NIBFILE}
    PROPERTIES
        MACOSX_PACKAGE_LOCATION "Resources/English.lproj"
        GENERATED 1
)

NIB ファイルの場所を設定する必要がありますが、準備スクリプトを初めて実行するときには存在しないため、GENERATED にも設定する必要があることに注意してください。

于 2012-03-15T03:10:28.690 に答える
0

問題が解決しました。このリンクを参照してください。その方法は機能します。私の最終的な解決策は次のとおりです。

//projectDef.cmake

set(XIB "Mac/bundle_template/input.xib")

add_mac_plugin(${PROJECT_NAME} ${PLIST} ${STRINGS} ${LOCALIZED} SOURCES ${XIB})

//Mac.cmake in "add_mac_plugin" macro

if (${ARGC} GREATER 5)
add_library( ${PROJECT_NAME} MODULE
    ${SOURCES} 
    ${ARGN}
    )
else()
add_library( ${PROJECT_NAME} MODULE
    ${SOURCES} 
    )
endif()

if (${ARGC} GREATER 5)
set_target_properties(${PROJECT_NAME} PROPERTIES
    BUNDLE 1
    BUNDLE_EXTENSION plugin
    XCODE_ATTRIBUTE_WRAPPER_EXTENSION plugin  #sets the extension to .plugin
    XCODE_ATTRIBUTE_MACH_O_TYPE mh_bundle
    XCODE_ATTRIBUTE_INFOPLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/bundle/Info.plist
    MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/bundle/Info.plist
    RESOURCE ${ARGN}
    LINK_FLAGS "-Wl,- exported_symbols_list,${FB_ESC_ROOT_DIR}/gen_templates/ExportList_plugin.txt")
else()
set_target_properties(${PROJECT_NAME} PROPERTIES
    BUNDLE 1
    BUNDLE_EXTENSION plugin
    XCODE_ATTRIBUTE_WRAPPER_EXTENSION plugin  #sets the extension to .plugin
    XCODE_ATTRIBUTE_MACH_O_TYPE mh_bundle
    XCODE_ATTRIBUTE_INFOPLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/bundle/Info.plist
    MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/bundle/Info.plist
    LINK_FLAGS "-Wl,-exported_symbols_list,${FB_ESC_ROOT_DIR}/gen_templates/ExportList_plugin.txt")
endif()

私の変更はあまり美しくないようです。cmake がよくわかりません。こんにちはタクシー運転手、xib のような外部リソースをサポートするためにマクロを更新できますか? ところで、どうもありがとう、男。

于 2012-03-16T03:11:54.423 に答える