C++ 程序文档生成器(doxygen)使用说明

news2024/10/5 13:50:16

        程序文档,是每个程序员必看文档,在日常业务开发中,难免会封装一些组件。没有很好的组件文档,再好的组件都是废物,。因此大型业务中,文档和思维导图,两个都是必备!
 

一、注释风格
        需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的C++的注释风格 主要使用下面这种样式:即在注释块开始使用三个反斜杠‘/’

1.1. 文件注释

/***************************************
* @file 文件名
* @brief 概述
*
* 详细概述
*
* @author 作者,包含email等
* @version 版本号(maj.min,主版本.分版本格式)
* @date 日期
*****************************************/


1.2. 命名空间的注释

///@brief 简单概述
///
///详细概述


1.3. 类定义注释

对需要的类增加注释,需要 说明类的设计方法,类的使用指南,说明类的不变项

///@brief 简要概述
///
///详细说明
///
///使用指南设计函数调用可以@ref 函数名 用于引用其他的说明
///
///其他说明,重写父类函数加以特殊实现
///
///@invariant 类不变项,例如哪些值不会超多少多少
///
class xxx
{…};


1.4. 数据声明注释

行尾说明

Type varName;///< 说明


多行说明

/// 说明
///
///
Type varName;


1.5. 函数注释规范

///@brief 简单概述
///
///详细说明
///@param[in|out] 参数名,in,out表示输入还是输出
///@pre 前者条件
///@return 说明
///@retval 返回值 说明, 这个是可选的
///@post 说明函数完成后的世界状态


1.6. 代码标记数值规范

///@todo 将要做的代码
///@bug 表示此处的bug描述


1.7. 枚举变量的注释示例

///  颜色的枚举定义  
///  
///  该枚举定义了系统中需要用到的颜色\n  
///  可以使用该枚举作为系统中颜色的标识  
enum TEnum  
{  
  RED,      ///< 枚举,标识红色    
  BLUE,      ///< 枚举,标志蓝色    
  YELLOW     ///< 枚举,标志黄色.    
}enumVar;   


附:Doxygen支持的指令

        可以在注释中加一些Doxygen支持的指令,主要作用是控制输出文档的排版格式,使用这些指令时需要在前面加上“\”或者“@”(JavaDoc风格)符号,告诉Doxygen这些是一些特殊的指令,通过加入这些指 令以及配备相应的文字,可以生成更加丰富的文档,下面对比较常用的指令做一下简单介绍。

常用指令介绍

@file    档案 的批注说明。
@author    作者 的信息
@brief    用于class 或function的简易说明eg:@brief 本函数负责打印错 误信息串
@param    主要 用于函数说明中,后面接参数的名字,然后再接关于该参数的说明
@return    描述 该函数的返回值情况eg:@return 本函数返回执 行结果,若成功则返回TRUE,否则返回FLASE
@retval    描述 返回值类型eg:@retval NULL 空字 符串。@retval !NULL 非 空字符串。
@note    注解
@attention    注意
@warning    警告 信息
@enum    引用了某个枚举,Doxygen会在该枚举处产生一个链接eg:@enum CTest::MyEnum
@var    引用了某个变量,Doxygen会在该枚举处产生一个链接eg:@var CTest::m_FileKey
@class    引用 某个类,格式:@class [] []eg:@class CTest “inc/class.h”
@exception    可能 产生的异常描述eg:@exception 本函数 执行可能会产生超出范围的异常


==================

二、 linux下使用doxygen
我的开发环境是ubuntu, 默认有doxygen 命令,如果没有可以从官网下载一个编译安装之doxygen工具的使用简单的2步就够了:

2.1. 生成默认配置文档

doxygen -s -g yourconfigname


这一条命令就可以生成一个叫 “yourconfigname” 的配置文档

接下来需要打开这个文档,对其中某些字段做配置,一般来说,只需要配置其中十几个字段就可以:

\# 项目名称,将作为于所生成的程序文档首页标题
PROJECT_NAME       = “Test“
\# 文档版本号,可对应于项目版本号,譬如 svn 、 cvs 所生成的项目版本号
PROJECT_NUMBER     = "1.0.0”
\# 程序文档输出目录
OUTPUT_DIRECTORY   = doc/
\# 程序文档语言环境
OUTPUT_LANGUAGE   = Chinese
\# 如果是制作 C 程序文档,该选项必须设为 YES ,否则默认生成 C++ 文档格式
OPTIMIZE_OUTPUT_FOR_C  = YES
\# 对于使用 typedef 定义的结构体、枚举、联合等数据类型,只按照 typedef 定义的类型名进行文档化
TYPEDEF_HIDES_STRUCT   = YES
\# 在 C++ 程序文档中,该值可以设置为 NO ,而在 C 程序文档中,由于 C 语言没有所谓的域 / 名字空间这样的概念,所以此处设置为 YES
HIDE_SCOPE_NAMES    = YES
\# 让 doxygen 静悄悄地为你生成文档,只有出现警告或错误时,才在终端输出提示信息
QUIET  = YES
\# 只对头文件中的文档化信息生成程序文档
FILE_PATTERNS     = *.h
\# 递归遍历当前目录的子目录,寻找被文档化的程序源文件
RECURSIVE        = YES
\# 示例程序目录
EXAMPLE_PATH      = example/
\# 示例程序的头文档 (.h 文件 ) 与实现文档 (.c 文件 ) 都作为程序文档化对象
EXAMPLE_PATTERNS    = *.c  *.h
\# 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件
EXAMPLE_RECURSIVE   = YES
\# 允许程序文档中显示本文档化的函数相互调用关系 
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION  = YES
REFERENCES_LINK_SOURCE = YES
\# 不生成 latex 格式的程序文档
GENERATE_LATEX     = NO
\# 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包
HAVE_DOT        = YES
CALL_GRAPH      = YES
CALLER_GRAPH    = YES
\# 让 doxygen 从配置文件所在的文件夹开始,递归地搜索所有的子目录及源文件
**RECURSIVE = YES**  
\# 在最后生成的文档中,把所有的源代码包含在其中
**SOURCE BROWSER = YES**
$ 这会在 HTML 文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系
**GENERATE TREEVIEW** **=** **ALL**


2.2. 执行命令

doxygen yourconfigname


        这一条命令就可以在指定的目录下生成 html 目录(根据配置决定,也可以生成帮助文档等)

2.3 用apache等存放刚刚生成的html目录

        比如我的机器安装了apache,则可以在 /var/run/www 目录下建一个软连接

连接到刚刚生成好的 html 目录,然后就可以从浏览器访问文档了,下面是我的项目的文档界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IPv6隧道--GRE隧道

GRE隧道 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。 GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一…

各种设备上恢复已删除的文件和文件夹的数据恢复软件清单

最好的数据恢复软件可以简单轻松地恢复计算机、移动设备或存储介质上已删除的文件和文件夹。 询问任何经历过数据丢失的人这是否是一种有趣的经历&#xff0c;他们会告诉您数据丢失&#xff0c;无论是由于硬件或软件故障、意外删除还是网络犯罪&#xff0c;都会带来极大的压力…

美国 SEC 批准比特币现货 ETF 上市,SEC 告诉我们的风险包含哪些?

撰文&#xff1a;Will 阿望 查看原文&#xff1a;美国 SEC 批准比特币现货 ETF 上市&#xff0c;SEC 告诉我们的风险包含哪些&#xff1f; 历经十年的 BTC ETF 艰辛审批之路终于迎来了胜利的曙光&#xff0c;2024 年 1 月 11 日凌晨 4 时&#xff0c;美国证监会&#xff08;S…

AIGC实战——像素卷积神经网络(PixelCNN)

AIGC实战——像素卷积神经网络 0. 前言1. PixelCNN 工作原理1.1 掩码卷积层 1.2 残差块2. 训练 PixelCNN3. PixelCNN 分析4. 使用混合分布改进 PixelCNN小结系列链接 0. 前言 像素卷积神经网络 (Pixel Convolutional Neural Network, PixelCNN) 是于 2016 年提出的一种图像生成…

礼贺新春,徐坊大曲新品【中国红】

梁山徐坊大曲新推出中国风礼盒&#xff0c;以中国红为主题&#xff0c;为即将到来的新春佳节增添了浓厚的节日气氛。为您呈现一场视觉与味觉的盛宴。从礼盒的颜色到图案设计&#xff0c;无不体现出中国红的热情与活力&#xff0c;象征着吉祥、喜庆与团圆。梁山徐坊大曲&#xf…

ubuntu qt 运行命令行

文章目录 1.C实现2.python实现 1.C实现 下面是封装好的C头文件&#xff0c;直接调用run_cmd_fun()即可。 #ifndef GET_CMD_H #define GET_CMD_H#endif // GET_CMD_H #include <iostream> #include<QString> using namespace std;//system("gnome-terminal -…

USB8814动态信号采集卡——声音振动类信号处理的理想之选!

背景介绍&#xff1a; 科技的发展在一定程度上依赖于对信号的处理&#xff0c;信号处理技术的先进性在很大程度上决定了科技发展的速度和方向。数字信号处理技术的崛起&#xff0c;彻底改变了传统的信息与信号处理方式&#xff0c;使得数据采集这一前期工作在数字系统中发挥着…

FTP文件传输协议 、多种方式安装yum仓库

一、网络文件共享服务 1.存储类型分三种&#xff1a; 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN&#xff08;可以使用空间&#xff0c;管理也是你来管理&#xff09; 网络附加存储…

ImageNet Classification with Deep Convolutional 论文笔记

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

Leetcode23-数组能形成多少数对(2341)

1、题目 给你一个下标从 0 开始的整数数组 nums 。在一步操作中&#xff0c;你可以执行以下步骤&#xff1a; 从 nums 选出 两个 相等的 整数 从 nums 中移除这两个整数&#xff0c;形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长…

SpringMVC参数接收见解4

# 4.参数接收Springmvc中&#xff0c;接收页面提交的数据是通过方法形参来接收&#xff1a; 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型&#xff0c;所以spirngmvc提供了很多converter&#xff08;转换…

第二证券:大盘探底回升走出底部还看成交量配合

持续震动数日后&#xff0c;大盘再现探底上升走势。 上证指数周二小幅低开后窄幅震动&#xff0c;午后快速回落改写本轮回调新低后&#xff0c;有资金开始出手介入&#xff0c;尾盘指数翻红。深证成指同样是在午后呈现探底上升走势&#xff0c;最终重回5日均线上方。截至收盘&…

mysql 下载和安装和修改MYSQL8.0 数据库存储文件的路径

一、第一步:下载步骤 下载链接&#xff1a;MySQL :: Download MySQL Installer 选择版本8.0.35&#xff0c;社区版&#xff0c; 点击 Download 下载 安装包 二、第二步:安装步骤 添加环境变量&#xff0c;C:\Program Files\MySQL\MySQL Server 8.0\bin 可以点开MySQL 8.0 Co…

如何用AI提高论文阅读效率?

已经2024年了&#xff0c;该出现一个写论文解读AI Agent了。 大家肯定也在经常刷论文吧。 但真正尝试过用GPT去刷论文、写论文解读的小伙伴&#xff0c;一定深有体验——费劲。其他agents也没有能搞定的&#xff0c;今天我发现了一个超级厉害的写论文解读的agent &#xff0c…

HNU-模式识别-作业2-面向应用分类系统

模式识别-作业2 计科210X 甘晴void 202108010XXX 【具体实现思路是按照去年数学建模国赛题来做的&#xff0c;就放个思路&#xff0c;完整不放全了】 题目&#xff1a; 查阅文献资料&#xff0c;构建一个面向应用的分类系统。 要求&#xff1a; 至少3页A4纸&#xff0c;文…

机器人制作开源方案 | AI校园服务机器人

作者&#xff1a;李强、李振宁、毛维雷、李文文、张奥 单位&#xff1a;山西能源学院 指导老师&#xff1a;姚志广、程晟 在这个科技飞速发展的时代&#xff0c;在工业智造、人工智能的飞速发展中&#xff0c;出现了越来越多的智能化机械装置&#xff0c;也有许多创新类的比赛…

STM32F103标准外设库—— 新建工程与库函数(四)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

力扣刷MySQL-第二弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

基于Yolov5+Deepsort+SlowFast算法实现视频目标识别、追踪与行为实时检测

前言 前段时间打算做一个目标行为检测的项目&#xff0c;翻阅了大量资料&#xff0c;也借鉴了不少项目&#xff0c;最终感觉Yolov5DeepsortSlowfast实现实时动作检测这个项目不错&#xff0c;因此进行了实现。 一、核心功能设计 总的来说&#xff0c;我们需要能够实现实时检测视…

SAP PI之Rest adapter

一&#xff0c;简介 REST风格接口是以http为传输协议&#xff0c;以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程&#xff0c;一个REST接口包含的信息有&#xff1a;服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…