【问题标题】:CMake add depedency to the install targetCMake 将依赖项添加到安装目标
【发布时间】:2023-04-07 15:34:01
【问题描述】:

我在使用 cmake 时遇到了以下问题。我使用来自 http://tobias.rautenkranz.ch/cmake/doxygen/ 的 UseDoxygen 为我的库生成文档。这工作正常,但知道我想实现以下几点: 当我调用“make install”时,我想构建文档并安装它。因此我添加了

install(DIRECTORY ${DOXYFILE_OUTPUT_DIR}/${DOXYFILE_HTML_DIR} DESTINATION share/doc/mylib/)
add_dependencies(install doc) 

到我的 CMakeLists.txt。 这会导致错误:

  CMake Error at CMakeModules/UseDoxygen.cmake:145 (add_dependencies):
  add_dependencies Adding dependency to non-existent target: install
Call Stack (most recent call first):
  CMakeLists.txt:141 (include)

是否有可能为此获得简单的解决方法?因为如果目标未连接,则安装步骤不会安装任何内容,除非在调用“make install”之前手动完成“make doc”。

问候 格里苏

【问题讨论】:

标签: cmake


【解决方案1】:

我们通过添加add_custom_target 并指定ALL 选项来构建我们的文档,以便它使用all 目标构建。

然后安装,只需install 命令。无需向install 目标添加任何内容。

如果您将文档添加到all 目标,那么执行make install 也将构建文档。

【讨论】:

  • 这很好用。我使用额外的 add_dependencies 实现了正确的顺序(构建后的文档)。
  • 这也适用于其他内置目标,例如 packageinstall
  • 这不是一个可接受的解决方案。问题仍未得到解答,如何仅将依赖项添加到安装目标。
  • @andrewrk 如果您有更好的答案,请务必发布。然而,在 7 年前,当这个问题被问及并得到回答时,这种方法是基于 CMake 中可用的内容以及我们可以完成的内容。
【解决方案2】:

如果您生成代码文档,在构建命令之后执行该命令不是更好的主意吗?这样,它将在安装时可用。

您可以在 POST_BUILD 添加自定义命令并在那里执行 doxygen 命令。更多信息请访问http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:add_custom_command

【讨论】:

    【解决方案3】:

    通过 add_custom_target( ALL ...) 构建文档并不是一个理想的解决方案,因为这意味着为所有配置(Debug、Release、RelWithDebInfo、MinSizeRel)冗余地构建了文档。

    无论构建配置如何,我都想构建文档一次,然后使用 install() 命令的 CONFIGURATIONS 选项仅为 Release 和 RelWithDebInfo 配置安装它。 install() 应该取决于文档目标,但正如我所说,只为一个配置构建它。似乎没有办法将 install() 的依赖项添加到满足这些要求的文档中。

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 1970-01-01
      • 2016-08-23
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 2016-02-29
      • 1970-01-01
      相关资源
      最近更新 更多