【问题标题】:add_subdirectory() without installing anything [duplicate]add_subdirectory() 不安装任何东西[重复]
【发布时间】: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


【解决方案1】:

您可以使用它来阻止安装 Google 测试:

add_directory(gtest EXCLUDE_FROM_ALL)

【讨论】:

猜你喜欢
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
相关资源
最近更新 更多