【问题标题】:What dependencies does the built-in INSTALL target have?内置的 INSTALL 目标有哪些依赖关系?
【发布时间】:2016-07-14 10:03:56
【问题描述】:

CMake 有一个内置的 install 目标,因此您可以在生成 Makefile 时使用 make install,或者在 Visual Studio 中构建 INSTALL 项目等。

此目标的行为由 CMake 文件中的各种 install() 命令定义,例如将现有 CMake 目标的文件或产品复制到特定的安装目录。

install() 命令还允许您使用to specify a component。如果您随后调用 CMake 并指定一个组件,则 install 目标将安装与该特定组件关联的产品。

不过,我没有找到的是:install 目标依赖于哪些目标?

  • 如果我的其中一个目标无法编译,这是否会导致 make install 失败,即使该目标没有产生任何可供安装的内容?
  • 如果我正在构建一个特定的组件,并且我已经在我最初的 CMake 调用中指定了它,make install 将在我的源代码树中构建 所有 目标(但只安装一个组件)?还是只构建安装特定组件所需的目标?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    这取决于all

    您可以使用EXCLUDE_FROM_ALL 来控制其中的内容,或者通过设置CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 来删除依赖项,但这不会用特定目标替换它,它只是意味着 make install 无需尝试构建任何东西即可进行安装。

    这是来自CMAKE_SKIP_INSTALL_ALL_DEPENDENCY的文档

    默认情况下,install 目标依赖于all 目标。其效果是,当调用make install 或构建INSTALL 时,首先构建all 目标,然后开始安装。如果CMAKE_SKIP_INSTALL_ALL_DEPENDENCY设置为TRUE,则不会创建此依赖项,因此安装过程将立即开始,与项目是否已完全构建无关。

    【讨论】:

      【解决方案2】:

      make install 无条件地依赖于make all

      也就是说,即使是安装单个文件,您也需要(成功)完成make all 阶段。

      【讨论】:

      • 这是否记录在任何地方?我认为当我使用单个组件调用 CMake 时这也适用?
      • Is this documented anywhere? - 它应该......但我找不到那个地方。 I assume this applies also when I call CMake with a single component? - 是的,即使安装单个组件也需要构建整个项目 (make all)。
      猜你喜欢
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多