使用 Sphinx-apidoc 从C++代码生成文档



过去有几个关于这个主题的帖子声称狮身人面像根本不支持这一点。我有我的疑问,但要么它已经更新了,要么它的文档隐藏得很好,因为这是网站上的一个链接,另有说明:http://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cpp-domain

无论如何,我是 Sphinx 的新手,但我试图使用它(最终)使用某些源代码C++代码中的一些文本来自动化文档。到目前为止,我在使用 sphinx-apidoc -o ... 命令时无法到达任何地方。将创建一个几乎空白的文档。我可能没有使用正确的指令,因为我不知道如何 - 支持文档无法帮助我。

任何人都可以提供一些帮助,使其工作所需的基本步骤?如果无法从C++自动生成文档,C++域的用途是什么以及如何使用它们?

关于自动生成C++文档:

在阅读了如何使用狮身人面像之后,您应该了解一下呼吸:

呼吸提供了狮身人面像和Doxygen文档之间的桥梁 系统。

这是一种将 Doxygen 信息包含在一组 由狮身人面像生成的文档。目的是制作一个自动文档 比如支持喜欢使用狮身人面像但使用语言的人 除了蟒蛇。该系统依赖于Doxygen的xml输出。

因此,此外,您需要遵循Doxygen评论风格,甚至设置doxygen项目。但是我尝试过,并且在初始设置发生后效果非常好。以下是我们CMakeLists.txt的摘录,可能会让您了解狮身人面像和氧气如何协同工作:

macro(add_sphinx_target TARGET_NAME BUILDER COMMENT_STR)
    add_custom_target(${TARGET_NAME}
    COMMAND sphinx-build -b ${BUILDER} . sphinx/build/${BUILDER}
        WORKING_DIRECTORY docs
        DEPENDS doxygen
        COMMENT ${COMMENT_STR}
    )
endmacro(add_sphinx_target)
add_custom_target(doxygen
    COMMAND doxygen docs/doxygen.conf
    COMMENT "Build doxygen xml files used by sphinx/breathe."
)
add_sphinx_target(docs-html
    html
    "Build html documentation"
)

因此,在初始设置之后,基本上可以归结为:

  1. 使用doxygen path/to/config构建 DOXYGEN 文档
  2. cd到狮身人面像配置所在的目录中。
  3. 使用sphinx-build . path/to/output构建狮身人面像文档

在 c++ 域上:

狮身人面像不仅仅是一个自动生成文档的系统。我建议你看看这些例子(并考虑到狮身人面像网站本身是用狮身人面像reST代码编写的)。特别是单击许多狮身人面像生成的页面上的Show Source链接。

因此,如果您无法为项目自动生成文档,则必须自己完成。基本上,狮身人面像是任何(LaTeX,HTML,...)编译器的reST。所以你可以写任意文本,但优点是它有很多命令来记录不同语言的源代码。每种语言都有自己的域(前缀或命名空间)来分隔不同语言的命名空间。例如,我可以使用以下命令记录一个 python 函数:

.. py:function:: Timer.repeat([repeat=3[, number=1000000]])
    Does something nasty with timers in repetition

(来源)

我可以使用 cpp 域做同样的事情:

.. cpp:function:: bool namespaced::theclass::method(int arg1, std::string arg2)
   Describes a method with parameters and types.

(来源)

因此,如果你想在没有doxygen+breathe的情况下记录你的c ++项目,但使用狮身人面像,你必须自己编写重组的文本文件。这也意味着您将文档与源代码分开,这可能是不可取的。

我希望这能把事情弄清楚一点。为了进一步阅读,我强烈建议您仔细阅读狮身人面像教程和文档,直到您了解它的实际作用。

最新更新