卸下cmake的生成特定的文件(Remove specific file from cmake bu

2019-09-02 07:49发布

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

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

因此测试应该编译除了main.cpp的所有来源。 主要应编译一切,但testing.cpp。

Answer 1:

以正常的方式很可能会创建一个从除的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})


文章来源: Remove specific file from cmake build
标签: cmake