【问题标题】:What is the proper way to document a CMake module?记录 CMake 模块的正确方法是什么?
【发布时间】:2019-02-13 00:01:47
【问题描述】:

快速的 Google 搜索(...实际上是许多相当广泛的 Google 搜索)无法解释如何正确记录 CMake 模块。

我正在寻找一种记录自定义 CMake 模块的方法,以便它们与 cmake --help-module <module_name> 命令一起使用。有没有这样做的标准方法?谁能指点我一些好的例子?文档过程似乎很奇怪......没有很好的文档记录。哈哈。

如何记录与cmake --help-module 一起使用的模块?

感谢任何帮助。

【问题讨论】:

  • AFAIK,cmake --help-module <module_name>无法显示你自己的模块,只有cmake内置模块可以。至于文档,我会查看 CMake 源代码并复制粗略格式以了解如何编写 reStructuredText 文档。

标签: cmake documentation cmake-modules


【解决方案1】:

引用我从 Brad King(CMake 开发人员电子邮件列表的成员)收到的电子邮件回复:

没有办法做到这一点。 --help-module 存在的唯一原因 完全是因为在 3.0 之前,文档是由 CMake 二进制文件本身,人们习惯于选择 可用的。它仅适用于内置模块,仅适用于 遗留原因,并且可能有一天会消失,以支持手册页 和 html 文档。

在线文档,例如 https://cmake.org/cmake/help/v3.14 上的文档 请发布/objects.inv 以支持 intersphinx:

http://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html

这是应一些用户的要求完成的,所以我没有研究如何 这行得通,但应该能够使用狮身人面像来生成一个 自己的文档,并且仍然交叉引用 CMake 的在线文档。

如果您能做到这一点,我们欢迎 MR 添加描述如何使用的文档, 也许在

https://gitlab.kitware.com/cmake/cmake/blob/master/Help/dev/documentation.rst

听起来像使用 Sphinx 是要走的路。

附加信息:

Sphinx 是如何知道去解析那个“.cmake”文件的? Sphinx 是否以特殊方式识别“cmake-module”关键字并知道如何处理它?

它来自一个 Sphinx 模块,您可以在 CMake 源 Utilities/Sphinx/cmake.py 中找到它。或者您可以使用 pip 安装此文件:

pip install sphinxcontrib-moderncmakedomain

在配置 Sphinx 时,您必须在 Sphinx 的配置文件 (conf.py) 中命名要使用的扩展名,并将扩展名 (sphinxcontrib.moderncmakedomain) 添加到 extensions 数组中。

【讨论】:

    【解决方案2】:

    好消息:您可以使用 sphinx 记录您的 CMake 模块,同时使用 Doxygen 记录您的 C++(或其他)源代码。

    我创建了一个示例项目,展示了如何结合使用 sphinxcontrib-moderncmakedomain 与 Sphinx 和 Doxygen 来为您的 C++ 代码和 CMake 代码生成文档:

    https://gitlab.com/Pro1/doxygen-cmake-sphinx

    它使用 sphinxcontrib-moderncmakedomain 包和 CMake 本身来配置 sphinx conf.py 然后运行 ​​sphinx。

    该示例很大程度上基于来自https://gitlab.kitware.com/cmake/cmake/-/tree/master/Utilities/Sphinx的官方 CMake 文档

    【讨论】:

    • 谢谢!我会检查一下! :)
    猜你喜欢
    • 2010-11-11
    • 2011-06-27
    • 2014-08-04
    • 2016-06-28
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多