Doxygen
是一个代码文档生成工具。它从代码文件中提取注释并可生成多种文档形式。如:网页文档HTML,RTF (MS-Word),PDF等等。同时也可生成函数之间的调用和文件的依赖关系图表。
Doxygen
除了支持C++
语言外还支持C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors),甚至它也支持硬件描述语言VHDL。
doxygen的安装
- 使用
apt
安装doxygen
1 | sudo apt install doxygen |
- 使用最新版的二进制安装(该种方式想对于第一种,可安装最新的版本)
doxygen
的下载页面:
https://www.doxygen.nl/download.html
找到下面图片所示,下载二进制包。
可以看到,该二进制包是在Ubuntu 20.04
环境下编译的,可能不适用于其他版本的系统。
解压二进制包后,进入包文件夹,使用下面的命令安装。
1 | sudo make install |
makefile
中没有安装doxywizard
。
我们可以手动拷贝到/usr/local/bin/
中。
1 | cd doxygen-1.9.4/bin |
Doxywizard
是一个GUI
应用。可以用它来生成Doxygen
的配置文件。
- 安装
graphviz
Graphviz
是开源的图形可视化软件。它可以将结构化的信息以图表的形式显示出来。doxygen
可以调用Graphviz
显示函数的调用关系。
1 | sudo apt install graphviz |
htmlhelp
说明
htmlhelp
是一个可以将html
网页文件生成一个独立的chm
文件的软件工具。但它目前只能运行在windows
环境下。
如果需要生成chm
文件,可将doxygen
生成的网页文件拷贝至windows
环境下,然后用htmlhelp
来生成chm
文件。
注释和文档效果
- 头文件中添加如下函数注释。
1 | /** |
上面的注释方式是采用Javadoc
风格的。其实还有其他的风格。可以查看下面的网址了解:
https://www.doxygen.nl/manual/docblocks.html#cppblock
文档中对应的显示效果如下。
另外一个示例:
1 | /** |
\b
可以加粗后面的关键词,\e
表示后面的词进行斜体显示,<b> ...</b>
可将其中的内容加粗显示。\n
则是显式添加回车。
文档上的显示效果:
再一个示例:
1 | /** |
显示效果:
注意,注释中添加的关键字。
@brief
表示后面的内容是对函数功能的描述
@warning
一些警告信息
@param
传入参数的说明
@return
函数返回结果的说明
@see
方便跳转相关联的函数
另外注意,函数的注释放在头文件和源文件中效果是等同的。
- 项目中的
markdown
文档会生成相应的页面
- 对类成员的注释
1 | std::string odom_topic; //!< Topic name of the odometry message, provided by the robot driver or simulator |
文档显示效果:
- 注释一个结构体
1 | //! Trajectory related parameters |
结构体上面的 //! Trajectory related parameters
是对结构体的描述。
下面的//!< Trajectory related parameters
是对声明的类成员的描述。注意与上面符号的区别,这里多了一个<
。其实<
说明了注释的方向。
- 注释一个类
1 | /** |
生成文档
生成配置文件
用下面的命令生成配置模板文件
1 | doxygen -g |
运行完后默认会生成一个名为Doxyfile
的配置文件。
然后就可以根据需求手动修改配置文件了。
当然我们也可以基于图形界面来修改该文件。
运行doxywizard
1 | doxywizard |
然后点击file
->open
打开Doxyfile
配置文件。
或者直接使用
1 | doxywizard Doxyfile |
常用的参数配置
- 打开调用关系图
显示效果如下:
上图显示了该函数调用了哪些函数,然后又被什么函数调用了。
- 当
JAVADOC_AUTOBRIEF
参数设置为YES
时,会将下面的注释内容直接当成简介描述。
1 | /** |
如果设置成NO
的话,则需要添加@brief
显式标记。
1 | /** |
- 如果希望生成的文档中包含源码,则需要如下配置
生成文档
在具有Doxyfile
配置文件的目录下运行doxygen
即可生成文档。
1 | doxygen |
也可以在doxywizard
里点击运行doxygen
来生成文档。
觉得有用就点赞吧!
我是首飞,一个帮大家填坑的机器人开发攻城狮。
另外在公众号《首飞》内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。