31

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

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

所以测试应该编译除 main.cpp 之外的所有源。Main 应该编译除 testing.cpp 之外的所有内容。

4

1 回答 1

56

正常的方法可能是从除 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})
于 2013-05-08T20:58:27.763 回答