首页 > 其他分享 >doxygen使用说明

doxygen使用说明

时间:2023-10-20 20:26:39浏览次数:30  
标签:doxygen template author generic 说明 Doxygen file 使用 doxdocgen

前言

最近在工作的时候经常需要打包库,提供给到客户使用,在打包的过程中需要编写接口使用文档,之前都是自己一个接口一个接口重新编写的使用说明,感觉十分麻烦。在一次开会交流的时候,一个大佬推荐了我使用doxygen这个软件,仔细研究了一下发现,需要芯片厂,例如TI、ST等他们的使用文档都是通过这种方式来生成的,于是研究并学习了一下。

1.安装软件

1.Doxygen

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

2.graphviz

Graphviz(Graph Visualization Software)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。要使用Doxygen生成依赖图、继承图以及协作图,必须先安装graphviz软件。

3.HTML Help WorkShop

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

软件安装都选择默认方式,点击下一步直至安装完成。安装完后进行Doxygen配置时需要关联graphviz和HTML Help WorkShop的安装路径。

2.注释插件配置

要生成相对应的接口说明文档就必须要按照官方标准的模板,编写注释。这里提供vscode的一个注释插件,能够快速生成注释标准模块。

在vscode插件市场找到Doxygen Documentation generation插件

img

安装完成后,查看官方文档说明:

  // The prefix that is used for each comment line except for first and last.
  "doxdocgen.c.commentPrefix": " * ",

  // Smart text snippet for factory methods/functions.
  "doxdocgen.c.factoryMethodText": "Create a {name} object",

  // The first line of the comment that gets generated. If empty it won't get generated at all.
  "doxdocgen.c.firstLine": "/**",

  // Smart text snippet for getters.
  "doxdocgen.c.getterText": "Get the {name} object",

  // The last line of the comment that gets generated. If empty it won't get generated at all.
  "doxdocgen.c.lastLine": " */",

  // Smart text snippet for setters.
  "doxdocgen.c.setterText": "Set the {name} object",

  // Doxygen comment trigger. This character sequence triggers generation of Doxygen comments.
  "doxdocgen.c.triggerSequence": "/**",

  // Smart text snippet for constructors.
  "doxdocgen.cpp.ctorText": "Construct a new {name} object",

  // Smart text snippet for destructors.
  "doxdocgen.cpp.dtorText": "Destroy the {name} object",

  // The template of the template parameter Doxygen line(s) that are generated. If empty it won't get generated at all.
  "doxdocgen.cpp.tparamTemplate": "@tparam {param} ",

  // File copyright documentation tag.  Array of strings will be converted to one line per element.  Can template {year}.
  "doxdocgen.file.copyrightTag": [
    "@copyright Copyright (c) {year}"
  ],

  // Additional file documentation. One tag per line will be added. Can template `{year}`, `{date}`, `{author}`, `{email}` and `{file}`. You have to specify the prefix.
  "doxdocgen.file.customTag": [],

  // The order to use for the file comment. Values can be used multiple times. Valid values are shown in default setting.
  "doxdocgen.file.fileOrder": [
    "file",
    "author",
    "brief",
    "version",
    "date",
    "empty",
    "copyright",
    "empty",
    "custom"
  ],

  // The template for the file parameter in Doxygen.
  "doxdocgen.file.fileTemplate": "@file {name}",

  // Version number for the file.
  "doxdocgen.file.versionTag": "@version 0.1",

  // Set the e-mail address of the author.  Replaces {email}.
  "doxdocgen.generic.authorEmail": "[email protected]",

  // Set the name of the author.  Replaces {author}.
  "doxdocgen.generic.authorName": "your name",

  // Set the style of the author tag and your name.  Can template {author} and {email}.
  "doxdocgen.generic.authorTag": "@author {author} ({email})",

  // If this is enabled a bool return value will be split into true and false return param.
  "doxdocgen.generic.boolReturnsTrueFalse": true,

  // The template of the brief Doxygen line that is generated. If empty it won't get generated at all.
  "doxdocgen.generic.briefTemplate": "@brief {text}",

  // The format to use for the date.
  "doxdocgen.generic.dateFormat": "YYYY-MM-DD",

  // The template for the date parameter in Doxygen.
  "doxdocgen.generic.dateTemplate": "@date {date}",

  // Decide if you want to get smart text for certain commands.
  "doxdocgen.generic.generateSmartText": true,

  // Whether include type information at return.
  "doxdocgen.generic.includeTypeAtReturn": true,

  // How many lines the plugin should look for to find the end of the declaration. Please be aware that setting this value too low could improve the speed of comment generation by a very slim margin but the plugin also may not correctly detect all declarations or definitions anymore.
  "doxdocgen.generic.linesToGet": 20,

  // The order to use for the comment generation. Values can be used multiple times. Valid values are shown in default setting.
  "doxdocgen.generic.order": [
    "brief",
    "empty",
    "tparam",
    "param",
    "return",
    "custom",
    "version",
    "author",
    "date",
    "copyright"
  ],

  // Custom tags to be added to the generic order. One tag per line will be added. Can template `{year}`, `{date}`, `{author}`, `{email}` and `{file}`. You have to specify the prefix.
  "doxdocgen.generic.customTags": [],

  // The template of the param Doxygen line(s) that are generated. If empty it won't get generated at all.
  "doxdocgen.generic.paramTemplate": "@param {param} ",

  // The template of the return Doxygen line that is generated. If empty it won't get generated at all.
  "doxdocgen.generic.returnTemplate": "@return {type} ",

  // Decide if the values put into {name} should be split according to their casing.
  "doxdocgen.generic.splitCasingSmartText": true,

  // Array of keywords that should be removed from the input prior to parsing.
  "doxdocgen.generic.filteredKeywords": [],

  // Substitute {author} with git config --get user.name.
  "doxdocgen.generic.useGitUserName": false,

  // Substitute {email} with git config --get user.email.
  "doxdocgen.generic.useGitUserEmail": false

  // Provide intellisense and snippet for doxygen commands
  "doxdocgen.generic.commandSuggestion": true

  // Add `\\` in doxygen command suggestion for better readbility (need to enable commandSuggestion)
  "doxdocgen.generic.commandSuggestionAddPrefix": false

输入/**加回车即可自动生成注释

file.gif

这里提供一个较为简介好看的模板配置

    // Doxygen documentation generator set

    // File copyright documentation tag.  Array of strings will be converted to one line per element.  Can template {year}.
    "doxdocgen.file.copyrightTag": [
        "@copyright {indent:18} : {indent:2} Copyright (c) {year} by chipsea, All Rights Reserved."
    ],

    // The order to use for the file comment. Values can be used multiple times. Valid values are shown in default setting.
    "doxdocgen.file.fileOrder": [
        "file",
        "brief",
        "detail",
        "author",
        "version",
        "date",
        "copyright"
    ],

    // The template for the file parameter in Doxygen.
    "doxdocgen.file.fileTemplate": "@file {indent:18} : {indent:2} {name}",

    // The template of the brief Doxygen line that is generated. If empty it won't get generated at all.
    "doxdocgen.generic.briefTemplate": "@brief {indent:18} {text}",

    // Version number for the file.
    "doxdocgen.file.versionTag": "@version {indent:18} : {indent:2} beta V0.1",

    // Set the e-mail address of the author.  Replaces {email}.
    "doxdocgen.generic.authorEmail": "[email protected]",

    // Set the name of the author.  Replaces {author}.
    "doxdocgen.generic.authorName": "tangwc",

    // Set the style of the author tag and your name.  Can template {author} and {email}.
    "doxdocgen.generic.authorTag": "@author {indent:18} : {indent:2} {author} ({email})",

    // The format to use for the date.
    "doxdocgen.generic.dateFormat": "YYYY-MM-DD",

    // The template for the date parameter in Doxygen.
    "doxdocgen.generic.dateTemplate": "@date {indent:18} : {indent:2} {date}",

    // The order to use for the comment generation. Values can be used multiple times. Valid values are shown in default setting.
    "doxdocgen.generic.order": [
        "brief",
        "param",
        "tparam",
        "return",
        "retval"
    ],
    // The template of the param Doxygen line(s) that are generated. If empty it won't get generated at all.
    "doxdocgen.generic.paramTemplate": "@param[in] {indent:18} {param}",

    // The template of the return Doxygen line that is generated. If empty it won't get generated at all.
    "doxdocgen.generic.returnTemplate": "@return[out] {indent:18} {type}",

    // If this is enabled a bool return value will be split into true and false return param.
    "doxdocgen.generic.boolReturnsTrueFalse": true,

    // Whether include type information at return.
    "doxdocgen.generic.includeTypeAtReturn": true,

3.Doxygen语法简介

1.特殊命令简介

命令 字段名 语法
@file 文件名 file [< name >]
@brief 简介 brief
@author 作者 author
@mainpage 主页信息 mainpage [(title)]
@date 年-月-日 date
@author 版本号 version
@copyright 版权 copyright
@param 参数 param [(dir)] < parameter-name>
@return 返回 return
@retval 返回值 retval
@bug 漏洞 bug
@details 细节 details
@pre 前提条件 pre
@see 参考 see
@link 连接(与@see类库,{@link http://www.google.com}) link < link-object>
@throw 异常描述 throw < exception-object>
@todo 待处理 todo
@warning 警告信息 warning
@deprecated 弃用说明。可用于描述替代方案,预期寿命等 deprecated
@example 弃用说明。可用于描述替代方案,预期寿命等 deprecated

2.文件注释

一般放在文件开头

/**
 * @file 文件名
 * @brief 简介
 * @details 细节
 * @author 作者
 * @version 版本号
 * @date 年-月-日
 * @copyright 版权
 */

3.结构体,变量注释

结构体注释

/**
 * @brief 详细描述
 */

结构体里变量或变量/常量注释

结构体了变量也可以像这样注释

//定义一个整型变量a
int a;

/**
 * @brief 定义一个整型变量a
*/
int a;

int a; /*!< 定义一个整型变量a */
int a; /**< 定义一个整型变量a */
int a; //!< 定义一个整型变量a
int a; ///< 定义一个整型变量a

函数注释

/**
  * @brief 函数描述
  * @param 参数描述
  * @return 返回描述
  * @retval 返回值描述
  */

特殊语法说明

1.换行

在doxygen中注释换行必须手动添加:

16974410393849

如图添加后生成的:

img

2.多返回值多次添加

img

效果:

img

3.表格

对于一些变量利用表格说明更加直观有些,这里可以采用跟markdown语法相同的效果画表格

img

效果:

img

4.doxygen配置说明

根据上方写好了软件注释后,就可以打开安装好的Doxywizard软件。

打开后界面如下:

img

使用流程

1.选择运行doxygen的工作目录,一般是代码在那里就定位到那个文件夹。

img

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

img

注意:这里源代码路径和生成文档路径建议使用相对路径,只要确定了工作区就可以。

当有多个源代码路径话,这里可以先不添加,可以在后面详细配置部分增加

3.选择编程语言对应的最优结果,按照编程语言选择

img

4.选择输出格式,默认可以生成html和tatex格式的,后可以通过htmlhelp转成chm,先要选择html生成后才能选择chm。

img

5.选择dot tool,可以通过GraphViz来作图。

img

这样选择run就可以生成一个文档了。

img

进阶配置

这样生成以后部分界面不太美观,这里可以通过详细设置来优化。

1.设置中文

img

2.代码风格 如果勾选了,在这两种风格下默认第一行为简单说明,以第一个句号为分隔;如果不选,则需要按照Doxygen的指令@brief来进行标准注释。

img

3.生成所有变量和函数

img

img

4.增加输入路径和选择输入编码

img

5.设置HTMLHELP项,输入生成CHM名称,在HHC_LOCATION中填入HTMLHELP WORKSHOP安装目录中hhc.exe的路径,将chm编码方式改为GBK方式。

img

6.在Dot_PATH中填写GraphViz的安装路径。

img

7.设置预编译宏文件路径。

img

设置完成后可以选择将配置文件保存为cfg文件,后续只需要打开相应的配置文件即可直接使用

img

标签:doxygen,template,author,generic,说明,Doxygen,file,使用,doxdocgen
From: https://www.cnblogs.com/tangwc/p/17777930.html

相关文章

  • QT cmake工程使用QXlsx源码操作execl,无需编译QXlsx,也不需要下载其他东西,windows和ubu
    一、下载地址:链接二、进入下载好的QXlsx目录下,取出QXlsx目录和README.md待用三、用qt创建一个简单的cmake工程,将QXlsx目录和README.md文件放到cmakelists.txt所在目录 四、修改cmakelists.txt文件cmake_minimum_required(VERSION3.5)project(xlsxTestLANGUAGESCXX)......
  • UIAUTOMATION UIA Inspect.exe UIspy.exe 使用备忘
    一、安装inspect.exe的官网地址:  WindowsSDK-Windows应用开发|MicrosoftDeveloper在VisualStudio2022安装程序的可选组件中选择“Windows11SDK(10.0.22621.0)  百度 usingSystem.Windows.Automation;  二、样例https://learn.microsoft.com/en-us......
  • 摄像机使用注意事项
    1.白平衡模式要打到手动,才不会自动去调节白平衡了。如:快门优先或者光圈优先都有可能自动再去调节图像 2.udp发送visca指令:  云台设置里注意改成visca,然后注意一下visca端口  上:8101060105050301FF //81里的1是云台设置里的串口号, 0505是速......
  • redis其他操作、redis管道、django中使用redis、django缓存、celery介绍、补充单例
    redis其他操作'''delete(*names)exists(name)keys(pattern='*')expire(name,time)rename(src,dst)move(name,db))randomkey()type(name)'''#redis的key值,最大可以是多少?最大不超过512M一般1KB#redis的value值,最大可以是多少?最大不超过512M......
  • 21.3 Python 使用DPKT分析数据包
    dpkt项目是一个Python模块,主要用于对网络数据包进行解析和操作。它可以处理多种协议,例如TCP、UDP、IP等,并提供了一些常用的网络操作功能,例如计算校验和、解析DNS数据包等。由于其简单易用的特性,dpkt被广泛应用于网络安全领域,例如流量分析、漏洞利用、入侵检测等。使用该库可以快速......
  • 实验二测试结果——openssl API使用
    sm3加密代码及测试截图sm3代码:用sm3加密“20211115fanyiqing”生成摘要值作为输出。1#include<stdio.h>2#include<string.h>3#include"openssl/evp.h"4#include"err.h"56voidtDigest(){7unsignedcharmd_value[EVP_MAX_MD_SIZE];......
  • 使用Grafana 监控 minio 的部分改进
    使用Grafana监控minio的部分改进部署minio开启监控metrics的脚本mkdir-p/data/minio/datacat<<EOF>/etc/systemd/system/minio.service[Unit]Description=minio[Service]Type=simpleEnvironment="MINIO_ACCESS_KEY=miniouser"Environment="MINIO_......
  • pyinstaller 使用ecs/pos操作pos小票打印机
    #pyinstaller--onefile--noconsole--add-data"logo.bmp:."--add-data"D:\PythonTest\ecs_pos_print\.venv\Lib\site-packages\escpos\capabilities.json:\escpos"Main_Windows.py简介:python也可以操作pos小票打印机,使用串口命令来打印,打印速度和打印质量不是windows......
  • blackbox-exporter使用
      blackbox-exporter是Prometheus官方提供的exporter之一,主要提供http、dns、tcp、icmp的监控数据采集一、部署  通过docker-compose部署version:'2'services:blackbox_exporter:container_name:blackbox_exporterimage:registry.hozonauto.vo......
  • 使用Grafana监控Nacos的简单过程
    使用Grafana监控Nacos的简单过程背景与kafka一样,想同期监控一下nacos.发现nacos跟minio等一样都有对应的metrics的暴露接口.所以这边简单使用一下.studyFromhttps://blog.csdn.net/qq_30718137/article/details/117471732https://grafana.com/grafana/dashboards/132......