【转】Doxygen制作软件说明文档

[复制链接]
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:04 | 显示全部楼层 |阅读模式
https://mp.weixin.qq.com/s/FDN5kED12k8-PMEqMvU3hw

摘要:写代码容易、维护难,主要体现在代码说明文档难写或者直接不写,Source Insight+Doxygen组合,自动补齐注释,并生成标准接口文档。

1、需求
如下图函数注释:
72032627376be79c81.png
或者结构体、枚举注释:
9322627376d01d2dc.png
或者一些开源代码、芯片原厂SDK文档,如下图:
68787627376e1504a3.png
24680627376e8709ef.png
如何将自己的代码也打包成这样的说明文档呢?



 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:06 | 显示全部楼层

2、Source Insight注释模板

阅读本文前先熟悉Source Insight的操作,如何定义注释模板,可以参考代码的保养


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:06 | 显示全部楼层

3、Doxygen注释转换

Doxygen能将程序中的特定批注转换成为说明文件。它可以依据程序本身的结构,将程序中按规范注释的批注经过处理生成一个纯粹的参考手册,通过提取代码结构或借助自动生成的包含依赖图、继承图)以及协作图来可视化文档之间的关系,Doxygen生成的帮助文档的格式可以是CHM、RTF、PostScript、PDF、HTML等。

微软出品的HTML Help WorkShop是制作CHM文件的最佳工具,它能将HTML文件编译生成CHM文档。Doxygen软件默认生成HTML文件或Latex文件,我们要通过HTML生成CHM文档,需要先安装HTML Help WorkShop软件,并在Doxygen中进行关联即可。

下面将按照这张思维导图来讲述如何安装软件,以及如何写单片机注释和最终如何导出文档。

161762737774304c4.png


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:08 | 显示全部楼层
1、windows安装doxygen

首先在官网下载doxygen,网址:https://www.doxygen.nl/download.html

66422627377a378b0c.png

下载完成后傻瓜式一步一步安装就可以了。安装完成后在开始栏点击Doxywizard就可以打开软件了。

37419627377b20d829.png


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:22 | 显示全部楼层
2、Linux安装doxygen

这里使用的是ubuntu虚拟机,使用sudo apt-get install doxygen就可以安装。

6183462737acc054b6.png

安装完成后在命令行输入doxygen,如果出现帮助信息,说明安装成功,如果出现command not font则表明安装失败。之后使用sudo apt-get install doxygen-gui安装gui,就可以像windows那样使用图形化操作了。安装完成后使用doxygenwizard命令就可以打开doxygen了。

528962737b390c288.png

5471662737b3fbfb7c.png


3863662737b058b363.png
5380362737b1144764.png
8526262737b28831cd.png
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:23 | 显示全部楼层

3、MacOS安装doxygen

首先在官网下载MacOS版本的安装包。下载完成后,直接把他拖到application上面即可。

818762737b59c158e.png

7057862737b61911b9.png



5808262737b55eb22d.png
3484262737b5e79686.png
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:24 | 显示全部楼层
4、Doxygen语法简介

所谓Doxygen语法就是在写程序注视时候按照Doxygen语法规则来写注释。只有按照标准的注释规则来写注释,生成的文档才会非常偏亮。

1.特殊命令简介
命令
字段名
语法

@file文件名file [< name >]
@brief简介brief { brief description }
@author作者author { list of authors }
@mainpage主页信息mainpage [(title)]
@date年-月-日date { date description }
@author版本号version { version number }
@copyright版权copyright { copyright description }
@param参数param [(dir)] < parameter-name> { parameter description }
@return返回return { description of the return value }
@retval返回值retval  { description }
@bug漏洞bug { bug description }
@details细节details { detailed description }
@pre前提条件pre { description of the precondition }
@see参考see { references }
@link连接(与@see类库,{@link www.google.com})link < link-object>
@throw异常描述throw < exception-object> { exception description }
@todo待处理todo { paragraph describing what is to be done }
@warning警告信息warning { warning message }
@deprecated弃用说明,以后可能被废弃或已经有替代接口deprecated { description }
@remarks备注remarks { description }以上写注释时必须使用的关键字,但是实际操作中并不需要全部,按需使用部分即可。
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:25 | 显示全部楼层
2.文件注释

一般放在文件开头

  1. /**
  2. * [url=home.php?mod=space&uid=288409]@file[/url] 文件名
  3. * [url=home.php?mod=space&uid=247401]@brief[/url] 简介
  4. * [url=home.php?mod=space&uid=1543424]@Details[/url] 细节
  5. * [url=home.php?mod=space&uid=187600]@author[/url] 作者
  6. * [url=home.php?mod=space&uid=895143]@version[/url] 版本号
  7. * [url=home.php?mod=space&uid=212281]@date[/url] 年-月-日
  8. * [url=home.php?mod=space&uid=17282]@CopyRight[/url] 版权
  9. */

示例

1885262737bea53f9e.png




 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:27 | 显示全部楼层
3.结构体注释
  1. /**
  2. * @brief 类的详细描述
  3. */
示例
3139262737c3f4c24f.png
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:28 | 显示全部楼层
4.函数注释
  1. /**
  2.   * @brief 函数描述
  3.   * @param 参数描述
  4.   * [url=home.php?mod=space&uid=266161]@return[/url] 返回描述
  5.   * @retval 返回值描述
  6.   */
实例 1545062737c644441c.png




 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:28 | 显示全部楼层
5.常量/变量注释

一般常量/变量可以有两种形式:

  • 常量/变量上一行注释
  • 常量/变量后注释
    1. //定义一个整型变量a
    2. int a;

    3. /**
    4. * @brief 定义一个整型变量a
    5. */
    6. int a;
    1. int a; /*!< 定义一个整型变量a */
    2. int a; /**< 定义一个整型变量a */
    3. int a; //!< 定义一个整型变量a
    4. int a; ///< 定义一个整型变量a


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:29 | 显示全部楼层
5、使用Doxygen软件

上面是常规注释格式,然后使用Doxygen软件生成文档。使用Doxygen软件把SDK软件包代码生成一份文档,文档包含了所有的函数与结构体,这样别人在阅读或使用代码时就直观便捷许多。

1、打开Doxygen软件。

3493762737cc7b33a3.png


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:30 | 显示全部楼层

2、选择运行doxygen的工作目录,就是SDK软件包在哪个文件夹。

4913062737cf50db1a.png
doxygen 的工作目录


 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:49 | 显示全部楼层

3、接着填写一些生成文档的一些信息,包括文档名称、简介、版本、源码文件路径、生成的文档路径。

1221062737d1e039a3.png

 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:50 | 显示全部楼层
4、选择生成文档的格式,默认可以生成html和tatex格式的。
249446273819b448ab.png
 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:52 | 显示全部楼层

5、最后再run选项卡中点击Run doxygen就可以生成了。

34574627381ca6e180.png



 楼主| 可怜的小弗朗士 发表于 2022-5-5 15:57 | 显示全部楼层
6、在生成的目录中找到index.html文件打开即可。
410156273823cb455d.png
4702062738252388e7.png
浏览器打开

这样一个文档就生成好了。但是感觉有点不好看啊,没关系可以改一改参数,

95722627382d01771b.png

勾选JAVADOC_AUTOBRIEF

42688627382e1ddda5.png

勾选EXTRACT_ALL

70760627382efa2fc6.png

取消SHOW_USED_FILES

103262738307703ab.png

按照上面四张图的配置勾选,重新生成一次就可以了,现在可以看到树图显示在最左边了,符合我们的观看形式。

96709627383181b853.png

还可以把英文变成中文

20195627383252c41c.png

选择chinese

再次生成就变成中文的了。

6872162738330e2eba.png

静态图

228256273834fc905d.png

动态演示效果

这样一个文档说明就做好了。这时你只能在你的电脑上面找到index.html文件才能查看,如果想实时随时随地的查看就需要把他放到你的服务器上面了,可以通过网络访问。









406546273827d860d8.png
78726273829f17f78.png
 楼主| 可怜的小弗朗士 发表于 2022-5-5 16:05 | 显示全部楼层
6、Nginx本地访问

Nginx是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的Web和反向代理服务器。首先下载Nginx。网址:http://nginx.org/en/download.html。

62584627384e3b9197.png

如果打开Nginx.exe出现闪退。解决办法:nginx路径不许是英文的,不可以有中文路径。更改完后重新启动nginx.exe查看进程中是否有nginx。再在浏览器中输入地址localhost,正常打开即可。

21133627384ee0a9ea.png

然后我们通过doxygen生成的文件放入nginx的html文件夹中。

857686273850411d88.png

然后在浏览器输入:http://localhost/doxygen/index.html,就可以正常访问了。

304186273850f63458.png

将该网页收藏,就不用每次去文件夹找index.html文件访问文档,当然也可以将这个文件托管到gitee或者github


  • Doxygen并不处理所有的注释,doxygen重点关注与程序结构有关的注释,比如:文件、类、结构、函数、全局变量、宏等注释,而忽略函数内局部变量、代码等的注释。

  • .注释应写在对应的函数或变量前面。

  • .先从文件开始注释,然后是所在文件的全局函数、结构体、枚举变量、命名空间→命名空间中的类→成员函数和成员变量。

  • .Doxygen无法为DLL中定义的类导出文档。








 楼主| 可怜的小弗朗士 发表于 2022-5-5 16:05 | 显示全部楼层
[size=1.2em]补充:CHM文档
HTML格式文件零散,拷贝起来特别不方便,可以转成chm格式而方便转发分享。
配置Source Insight,按照Doxygen关键字的格式要求,定义注释模板,最后将生成的html说明文档转成chm单文件,软件的长期维护才能更加轻松。


onebank 发表于 2022-5-7 11:37 | 显示全部楼层
我用doxygen生成文档的时候,函数中间的注释有时候也会被提取到文档中去?楼主知道再哪里设置取消这个吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

763

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部