更新:如另一个答案中所述,似乎该选项是在子目录中的子项目中EXCLUDE_FROM_ALL禁用的最直接和正确的方法:install
add_subdirectory(googletest EXCLUDE_FROM_ALL)
以前的解决方案
如果您不需要在项目的版本中进行测试(您希望使用 CPack 交付),则googletest有条件地包含子目录,并在打包时将条件设置为 false:
...
if(NOT DISABLE_TESTS)
add_subdirectory(googletest)
endif()
包装与
cmake -DDISABLE_TESTS=ON <source-dir>
cpack
或者,如果您想要测试,但不想安装测试基础设施,您可以install通过定义具有相同名称的宏或函数来禁用命令:
# Replace install() to do-nothing macro.
macro(install)
endmacro()
# Include subproject (or any other CMake code) with "disabled" install().
add_subdirectory(googletest)
# Restore original install() behavior.
macro(install)
_install(${ARGN})
endmacro()
CMake mailing中也提出了这种方法。
根据评论,替换 CMake 命令的方式非常棘手,并且在某些情况下可能不起作用:传递给修改的参数install被错误地解析或恢复install不起作用,甚至install禁用以下 s。