Sphinx和Doxygen的主要区别是什么?

Ali*_*aei 20 c++ documentation opencv doxygen python-sphinx

我想为计算机视觉领域的项目,模块和库集合准备一份文档(主要用c ++编写).为此,我查看了OpenCV文档,您可能知道OpenCV 2.4.x文档基于Sphinx,这是我寻求的确切解决方案.Sphinx的优点是:

  1. 从语义角度看模块的层次结构.例如,卡尔曼滤波器运动分析和对象跟踪模块的子代
  2. 您可以添加图像和数学公式
  3. 相当不错的嵌入式搜索引擎

但我意识到OpenCV3.0的c ++版本是基于Doxygen记录的,我不知道为什么!因为它没有Sphinx那么有趣.我知道Doxygen可以编译你的代码并提取你的评论,这是一个有用的功能.我也知道有些库(如呼吸)可以作为DoxygenSphinx之间的桥梁.

现在我的问题是:

  1. 彼此的Sphinx和Doxygen替代品还是可以和它们一起使用?
  2. Doxygen是否具有Sphinx所提到的功能?
  3. 您更喜欢哪个文档引擎(Sphinx,Doxygen或其他引擎)?

keb*_*ebs 9

这个答案解决了你问题的第2点.

是的,doxygen部分具有这些功能.

  • 您可以使用数学公式,可以通过本地Latex安装或通过JavaScript渲染库MathJax进行渲染.与Latex一样,这些可以"嵌入"到文本中,也可以作为文本流中的单独单元.
  • 它还包括一个搜索引擎.
  • 您可以轻松地包含图像.

例如,下面的两行将在html和latex生成的输出中添加相同的图像:

  \image latex my_image.png "My image" width=10cm
  \image html my_image.png "My image" width=10cm
Run Code Online (Sandbox Code Playgroud)

我想我记得在html中,标题和宽度被忽略了?但是doxygen非常灵活,所以如果上面的命令不够,你可以将它们添加为html代码:

<img src="my_image.png"  ...additional html attributes...>
Run Code Online (Sandbox Code Playgroud)

Doxygen还支持许多常规html命令,您可以直接在注释块中包含这些命令.

除了构建Opencv手册之外,我没有使用Sphinx的经验,但是我可以添加的关于doxygen(我日常使用的)是它非常灵活,但这并不意味着它总是最好的选择.页面可能会混乱,如果评论附加代码设计不当,它可能会阻碍你.

为了完整性,一个最好的展示了doxygen可以做什么(当然除了doxygen网站),是Eigen库.看一看.