我有一个项目中,我基本上有两种主要的方法。 一个用于测试,一个用于,好了,运行代码。 通常你会创建子模块,但是这是不是一种选择。
file(GLOB sources "*.cpp")
file(GLOB headers "*.h")
add_executable(testing ${sources} ${headers})
add_executable(main ${sources} ${headers})
因此测试应该编译除了main.cpp的所有来源。 主要应编译一切,但testing.cpp。
以正常的方式很可能会创建一个从除的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})