从cmake生成中删除特定文件

从cmake生成中删除特定文件,cmake,Cmake,我有一个项目,我有两个主要的方法。一个用于测试,一个用于运行代码。 通常您会创建子模块,但这不是一个选项 file(GLOB sources "*.cpp") file(GLOB headers "*.h") add_executable(testing ${sources} ${headers}) add_executable(main ${sources} ${headers}) 所以测试应该编译除main.cpp之外的所有源代码。 Main应该编译testing.cpp以外的

我有一个项目,我有两个主要的方法。一个用于测试,一个用于运行代码。 通常您会创建子模块,但这不是一个选项

file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
add_executable(testing ${sources} ${headers})   
add_executable(main ${sources} ${headers})   
所以测试应该编译除main.cpp之外的所有源代码。
Main应该编译testing.cpp以外的所有内容

通常的方法可能是从main.cpp和testing.cpp之外的所有源创建一个库,然后将其链接到每个可执行文件。然而,我猜你的意思是,当你说你不能创建子模块时,你不能这样做

相反,您可以使用以下命令:


这有用吗?”原因我获取
list子命令REMOVE\u项要求列表存在。
在cmake 3.5.0、windows 10和上述代码下出现错误。是的,这在cmake 3.5.0下有效。可能由于出现错误消息,您已经“取消引用”了列表(例如,已完成
列表(删除${sources}…
),而不是
列表(删除${ITEM sources…
),或者列表为空。
file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
set(testing_sources ${sources})
list(REMOVE_ITEM testing_sources ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
list(REMOVE_ITEM sources ${CMAKE_CURRENT_SOURCE_DIR}/testing.cpp)
add_executable(main ${sources} ${headers})
add_executable(testing ${testing_sources} ${headers})