Doxygen使用

Doxygen使用

生成配置文件

1
doxygen -g

Doxygenfile 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 项目名称,将作为于所生成的程序文档首页标题
PROJECT_NAME = "Test"
# 文档版本号,可对应于项目版本号,譬如 svn、cvs 所生成的项目版本号
PROJECT_NUMBER = "1.0.0"
# 程序文档输出目录
OUTPUT_DIRECTORY = doc

# 程序文档输入目录
INPUT = User src inc Utilities

# 程序文档语言环境
OUTPUT_LANGUAGE = Chinese
DOXYFILE_ENCODING = UTF-8
# 只对头文件中的文档化信息生成程序文档
FILE_PATTERNS =
# 递归遍历当前目录的子目录,寻找被文档化的程序源文件
RECURSIVE = YES
# 如果是制作 C 程序文档,该选项必须设为 YES,否则默认生成 C++ 文档格式
OPTIMIZE_OUTPUT_FOR_C = YES
#提取信息,包含类的私有数据成员和静态成员
EXTRACT_ALL = yes
EXTRACT_PRIVATE = yes
EXTRACT_STATIC = yes
# 对于使用 typedef 定义的结构体、枚举、联合等数据类型,只按照 typedef 定义的类型名进行文档化
TYPEDEF_HIDES_STRUCT = YES
# 在 C++ 程序文档中,该值可以设置为 NO,而在 C 程序文档中,由于 C 语言没有所谓的域/名字空间这样的概念,所以此处设置为 YES
HIDE_SCOPE_NAMES = YES
# 让 doxygen 静悄悄地为你生成文档,只有出现警告或错误时,才在终端输出提示信息
QUIET = YES
# 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件
EXAMPLE_RECURSIVE = YES
# 允许程序文档中显示本文档化的函数相互调用关系
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
# 不生成 latex 格式的程序文档 PDF
GENERATE_LATEX = NO
# 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包
# HAVE_DOT = YES
# CALL_GRAPH = YES
# CALLER_GRAPH = YES
#在最后生成的文档中,把所有的源代码包含在其中
SOURCE_BROWSER = YES
# 这会在HTML文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系
GENERATE_TREEVIEW = ALL

生成注释

1
doxygen ./Doxygenfile

Doxygen 注释规范

1
2
3
4
5
6
7
8
9
# 块注释
/**
......
*/

# 行注释
///< ......
/** ...... */
/**< ...... */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注释命令	描述
@brief 概要信息
@details 详细描述
@par 开始一个段落,段名自定义
@param 标记参数意义
@return 描述返回意义
@retval 描述返回值意义
@todo 对将要做的事情进行注释
@bug 缺陷,链接到所有缺陷汇总的缺陷列表
@since 通常用来说明从什么版本、时间写此部分代码
@pre 用来说明代码项的前提条件
@post 用来说明代码项之后的使用条件
@code 在注释中开始说明一段代码,直到@endcode命令
@endcode 注释中代码段的结束
@fn 函数说明
@include 包含文件
@var 标注变量
@enum 标注枚举
@struct 标注结构体
@class 标注类
@note 描述一些注意事项
@addtogroup 添加到一个组

自动注释模板(VSCode settings.json 配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
// Doxygen documentation generator set
// 文件注释:版权信息模板
"doxdocgen.file.copyrightTag": [
"@copyright Copyright (c) {year} by 作者"
],
// 文件注释:自定义模块,这里我添加一个修改日志
"doxdocgen.file.customTag": [
"@par 修改日志:",
"<table>",
"<tr><th>Date <th>Version <th>Author <th>Description",
"<tr><td>{date} <td>1.0 <td>作者 <td>内容",
"</table>",
],
// 文件注释的组成及其排序
"doxdocgen.file.fileOrder": [
"file", // @file
"brief", // @brief 简介
"author", // 作者
"version", // 版本
"date", // 日期
"empty", // 空行
"copyright",// 版权
"empty", // 空行
"custom" // 自定义
],
// 下面时设置上面标签tag的具体信息
"doxdocgen.file.fileTemplate": "@file {name}",
"doxdocgen.file.versionTag": "@version 1.0",
"doxdocgen.generic.authorEmail": "邮箱@qq.com",
"doxdocgen.generic.authorName": "作者",
"doxdocgen.generic.authorTag": "@author {author} ({email})",
// 日期格式与模板
"doxdocgen.generic.dateFormat": "YYYY-MM-DD",
"doxdocgen.generic.dateTemplate": "@date {date}",

// 根据自动生成的注释模板(目前主要体现在函数注释上)
"doxdocgen.generic.order": [
"brief",
"tparam",
"param",
"return"
],
"doxdocgen.generic.paramTemplate": "@param{indent:8}{param}{indent:25}MyParamDoc",
"doxdocgen.generic.returnTemplate": "@return {type} ",
"doxdocgen.generic.splitCasingSmartText": true,
"[json]": {

"editor.quickSuggestions": {
"strings": true
},
"editor.suggest.insertMode": "replace"
},
}

手动注释模板

文件注释模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @file 文件名
* @brief 文件概要信息描述
* @author 作者
* @version 版本
* @date 日期
*
* @copyright 版权信息
*
* @par 修改日志:
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* <tr><td>日期 <td>版本 <td>作者 <td>说明
* </table>
*/

函数注释模板

1
2
3
4
5
6
7
/**
* @brief 函数功能概要信息
* @param[in] 输入参数 输入参数描述信息
* @param[out] 输出参数 输出参数描述信息
* @return 返回类型
* @retval 返回值 返回值意义描述信息
*/
-->

请我喝杯咖啡吧~

支付宝
微信