文件在add_custom_command后source_group中添加了两次
File added twice in source_group after add_custom_command
我正在尝试为我正在从事的项目(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}
行,则每个资源文件中只添加一个,但它们没有自定义命令。
任何帮助将不胜感激
看起来将
资源文件添加到可执行文件 AND 到源组时出现问题。我放弃了SET (MYAPP_FILES ${MYAPP_FILES} ${MYAPP_RES_FILES})
,它解决了问题
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- g++的分段错误(在NaN上使用to_string两次时)
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 蛇在C++不会连续转两次
- 检查一个数组是否包含在另一个数组中,以相反的顺序,至少两次
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 我应该如何去缓解两次出现的cin?
- Realloc 两次无法在 Visual Studio 上运行
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- oStream 不打印添加两个 valarray 的结果(使用运算符重载)
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- 在 char* 数组中添加两个索引
- C++析构函数调用两次,堆栈分配的复合对象
- 为什么参数在构造 std::thread 时移动两次
- 谷歌测试发现在macOSX上添加并运行了我的所有测试两次
- 阵列不能两次将相同的名称保存,当要添加新字符串时,程序应检查以查看该名称是否已经存在
- 相同的密钥(使用malloc创建)添加了两次映射
- 如何正确地将对象添加到向量,而无需两次调用析构函数
- 文件在add_custom_command后source_group中添加了两次
- QTreeWidget添加相同项目两次