gpt4 book ai didi

c++ - CMake:防止在子目录库项目中构建测试可执行目标

转载 作者:行者123 更新时间:2023-11-28 04:04:55 24 4
gpt4 key购买 nike

我编写了一个使用 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 中排除子目录中的测试> 目标?

最佳答案

如果我没理解错的话,这正是 CMake 的属性 EXCLUDE_FROM_ALL做。它可以用作目标属性(如果您只想排除该目标),或用作目录属性以排除子目录中的所有目标。为您的目标设置此属性:

set_target_properties(tests PROPERTIES EXCLUDE_FROM_ALL True)

关于c++ - CMake:防止在子目录库项目中构建测试可执行目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58903269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com