我已经编写了一个使用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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句