0

私が取り組んでいるプロジェクト (v2.8.8) の CMAKE を学ぼうとしています。各リソースからヘッダーを生成する一連のリソース ファイルにカスタム コマンドを追加しようとしています。次に、これらのリソースと生成されたヘッダーを Visual Studio 2005 プロジェクトの source_groups に追加したいと考えています。

これが私がこれまでに持っているものです:

SET (MYAPP_RES_FILES
    ${MYAPP_RES_DIR}/file.1
    ${MYAPP_RES_DIR}/file.2
    ${MYAPP_RES_DIR}/file.3
)

MACRO (MYTRANSFORM IN_FILES OUT_HEADERS)
    FOREACH (I ${${IN_FILES}})
        GET_FILENAME_COMPONENT (IN_FILE ${I} ABSOLUTE)
        GET_FILENAME_COMPONENT (OUT_HEADER ${I} NAME_WE)
        SET (OUT_HEADER ${CMAKE_CURRENT_BINARY_DIR}/res/generated/gen_${OUT_HEADER}.h)
        ADD_CUSTOM_COMMAND (OUTPUT ${OUT_HEADER}
            MAIN_DEPENDENCY ${IN_FILE}
            COMMAND ${MY_TOOL} -o ${OUT_HEADER} ${IN_FILE}
        )
        SET(${OUT_HEADERS} ${${OUT_HEADERS}} ${OUT_HEADER})
    ENDFOREACH (I)
ENDMACRO (MYTRANSFORM)

SOURCE_GROUP ("res" FILES
    ${MYAPP_RES_FILES}
)

MYTRANSFORM (MYAPP_RES_FILES MYAPP_RES_HEADER_FILES)
SOURCE_GROUP ("res\\generated" FILES
    ${MYAPP_RES_HEADER_FILES}
)

SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES})
SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_HEADER_FILES})

ADD_EXECUTABLE (${MYAPP_PROJECT_NAME} ${MYAPP_FILES})

動作しているように見えますが、各 res ファイルが source_group に 2 回追加されます。1 つはカスタム コマンドなし、もう 1 つはカスタム コマンドあり。この行を削除するとMAIN_DEPENDENCY ${IN_FILE}、各リソース ファイルが 1 つだけ追加されますが、カスタム コマンドはありません。

どんな助けでも大歓迎です

4

1 に答える 1

0

リソース ファイルを実行可能ファイルとソース グループに追加する際に問題が発生したようです。私は落としてSET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES})、それは問題を修正しました

于 2012-05-31T21:43:49.433 に答える