从cmake build中删除特定文件

时间:2013-05-08 20:31:58

标签: cmake

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

file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
add_executable(testing ${sources} ${headers})   
add_executable(main ${sources} ${headers})   

因此测试应该编译除main.cpp之外的所有源代码。 Main应编译除了testing.cpp之外的所有内容。

1 个答案:

答案 0 :(得分:46)

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

相反,您可以使用list(REMOVE_ITEM ...)命令:

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})