记录CMakeLists.txt和自定义或本地.cmake文件

时间:2016-04-05 00:44:44

标签: cmake documentation python-sphinx

有哪些方法可以记录我的项目CMakeLists.txt文件和本地项目.cmake文件?有一个两年前的问题/答案Documenting CMake scripts,我基本上再次在这里问。答案包含声明

  

目前,CMake 3.0正在开发中,它将获得基于Sphinx和reStructuredText的新文档系统。我想这会带来记录模块的新方法。

我查看了cmake developer documentation,但是这个新文档系统似乎是针对cmake本身的文档。我不知道如何使用它来记录我的用户定义的项目CMakeLists.txt文件或本地.cmake文件。

我希望,因为cmake项目内部有各种sphinx指令和角色,作为用户,我可以利用sphinx的这种内部用法。我希望能够在我的CMakeLists.txt文件和本地.cmake文件中包含一些标记,而无需重新发明轮子。其他项目也有相关的努力。例如,ROS catkin项目似乎提供了我所见过的最完整的方法,但对于非ROS项目来说,这是非常重要的,不容易使用。 (例如,查看他们的extracted cmake api page。)最简单的是sphinx-contrib cmakedomain,但它依赖于单独的第一个源文档而不是带有标记的 autodoc 方法评论。

也许这是cmake列表的问题,但我希望有人监控StackOverflow。

2 个答案:

答案 0 :(得分:1)

尽管有引用,但我认为CMake中与Sphinx相关的代码对用户没有用。我和你一样经历了同样的经历,我的项目CMake与CMake文档中使用的Sphinx代码不匹配。

只需使用普通的Sphinx并创建自己的模板。

答案 1 :(得分:1)

好消息:您可以使用 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 文档

另请参阅此处的相关问题: What is the proper way to document a CMake module?