如何从cmake中的列表中删除令牌?

时间:2014-08-18 13:49:30

标签: build makefile cmake

我想在不在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})

尝试删除这两个文件之前和之后的消息内容完全相同。

有什么问题?

1 个答案:

答案 0 :(得分:5)

您必须指定要删除的元素的完全名称。

在您的情况下,aux_source_directory./为前缀添加每个条目,因此必须使用正确的命令

list(REMOVE_ITEM SRC_LIST ./stdafx.h ./stdafx.cpp)

此外,请确保您了解使用aux_source_directory手动调用来维护源文件列表的含义:

  

使用此命令避免编写源列表很有诱惑力   库或可执行目标的文件。虽然这似乎有效,   CMake没有办法生成一个知道何时a的构建系统   新的源文件已添加。通常是生成的构建系统   知道何时需要重新运行CMake,因为CMakeLists.txt文件是   修改为添加新源。当源只是添加到   目录无需修改此文件,必须手动完成   重新运行CMake以生成包含新文件的构建系统。

引用the documentation for aux_source_directory