【发布时间】:2019-11-17 17:36:28
【问题描述】:
我编写了一个使用 doctest 的小型库。在 CMakeLists.txt 我有:
...
add_library(my_lib STATIC ${SRCS} $<TARGET_OBJECTS:common_files>)
add_executable(tests ${SRCS} $<TARGET_OBJECTS:common_files>)
target_compile_definitions(my_lib PRIVATE -DDOCTEST_CONFIG_DISABLE)
...
通过add_subdirectory在项目中使用库时,库和测试可执行文件在我只需要库时构建。
当包含 CMakeLists.txt 作为子目录时,我可以做些什么来防止构建测试,或者有没有更好的方法来实现类似的结果?
我正在使用 Ninja 构建项目。
我可以使用ninja -t targets 检查目标并从命令行仅构建我想要的目标,但我可以让 CMake 排除 all 目标的子目录中的测试吗?
【问题讨论】:
-
为了防止构建测试,请让您的构建系统只构建库目标。拥有多个目标的关键在于您可以独立构建它们。您不必总是构建“all”或“install”。
-
谢谢,我会在问题中添加信息,看看是否可以扩展。
标签: c++ testing cmake subdirectory doctest