我想在不在Windows中时从构建中排除某些源文件 以下CMakeLists.txt cmake文件有什么问题?
aux_source_directory(. SRC_LIST)
# Remove Microsoft specific files
message(${SRC_LIST})
list(REMOVE_ITEM SRC_LIST stdafx.h stdafx.cpp)
message("------------------")
message(${SRC_LIST})
尝试删除这两个文件之前和之后的消息内容完全相同。
有什么问题?
答案 0 :(得分:5)
您必须指定要删除的元素的完全名称。
在您的情况下,aux_source_directory
以./
为前缀添加每个条目,因此必须使用正确的命令
list(REMOVE_ITEM SRC_LIST ./stdafx.h ./stdafx.cpp)
此外,请确保您了解使用aux_source_directory
手动调用来维护源文件列表的含义:
使用此命令避免编写源列表很有诱惑力 库或可执行目标的文件。虽然这似乎有效, CMake没有办法生成一个知道何时a的构建系统 新的源文件已添加。通常是生成的构建系统 知道何时需要重新运行CMake,因为CMakeLists.txt文件是 修改为添加新源。当源只是添加到 目录无需修改此文件,必须手动完成 重新运行CMake以生成包含新文件的构建系统。