【发布时间】:2017-06-26 09:58:03
【问题描述】:
使用 CMake,我使用 add_subdirectory(gtest) 构建 gtest 来测试我的项目。我也使用 CPack 制作安装程序。
问题是 gtest 存储库(它是一个 git 子模块)在某些文件上运行 install(),因此它们最终会出现在我的安装程序中!显然我不想那样。有没有一种方法可以禁用给定子目录的 install() 命令,而无需从 CMakeLists 中删除它们?
【问题讨论】:
-
从来没有使用过 gtest,所以这可能是一个愚蠢的问题,但是......为什么你要构建一个与你的项目没有直接关系的工具 in 你的项目?为什么不单独构建/安装 gtest 并完成它? (我也不会在我的项目中构建 Boost.Test。)
-
它简化了项目的构建和与 cmake 的链接。如果您使用
add_directory在您的树中构建它,那么您可以直接使用target_link_libraries(mytest gtest),而无需费力寻找它。它不是超级优雅,但除了这个问题,它真的很好用。 -
但重点是,您将
add_subdirectory()用于find_package()的用途,发现问题,现在希望add_subdirectory()不 做某事is 用于... 我想暗示用find_package()(这并不难做到)并放弃add_subdirectory()会解决你的问题。 ;-) -
是的,但它会引入其他问题。无论如何,我已经为这个问题找到了一个合理的解决方法 - 明确设置
CPACK_COMPONENTS_ALL不包括Unspecified组件。 -
啊,这是一个更好的解决方案。
标签: cmake googletest cpack