我与使用emacs的开发人员合作 - 因此,他们有时会生成交换文件(调用一个#cmaketest.cpp),其中包含标记为
的目录中的井号字符file(GLOB_RECURSE MY_SOURCES my/dir/*.cpp).
为了防止编译这些文件,我希望能够:
list(REMOVE_ITEM MY_SOURCES \#*)
这个CMakeFile成功编译,但在Make上失败,并且对生成的Makefile的检查显示了对。的引用 #cmaketest.cpp,它不应该。
这可以通过下面的MWE重现:
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
project(libcmaketest)
file(GLOB_RECURSE TEST_SOURCES ${PROJECT_SOURCE_DIR}/*.cpp)
list(REMOVE_ITEM TEST_SOURCES \#*)
add_library(cmaketest ${TEST_SOURCES})
target_include_directories(cmaketest PRIVATE ${PROJECT_SOURCE_DIR})
PROJECT_SOURCE_DIR中的一个名为
的文件#cmaketest.cpp
我是否会失去理智?我只是没有正确地逃避这个角色,我是否从根本上误解了列表(REMOVE_ITEM)的工作原理? target_include_directories命令是否有问题?谢谢!
答案 0 :(得分:0)
是的,我正在失去理智。 FILTER用于删除正则表达式匹配的列表项,而不是REMOVE_ITEM。