【问题标题】:File added twice in source_group after add_custom_command在 add_custom_command 之后在 source_group 中添加了两次文件
【发布时间】:2012-05-29 21:26:16
【问题描述】:

我正在尝试为我正在从事的项目(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 中两次。一个没有自定义命令,一个有自定义命令。如果我删除 MAIN_DEPENDENCY ${IN_FILE} 行,则每个资源文件只添加一个,但它们没有自定义命令。

任何帮助将不胜感激

【问题讨论】:

    标签: c++ visual-studio cmake


    【解决方案1】:

    似乎将资源文件添加到可执行文件和源组时出现问题。我放弃了SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES}),它解决了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 2023-03-27
      • 1970-01-01
      • 2017-04-07
      • 2018-11-17
      • 2018-06-07
      • 2011-10-16
      相关资源
      最近更新 更多