0

0

如何使用Doxygen为c++代码自动生成文档【项目规范】

穿越時空

穿越時空

发布时间:2026-01-06 16:05:50

|

756人浏览过

|

来源于php中文网

原创

doxygen 是 c++ 项目最主流的文档生成工具,需正确编写注释、配置 doxyfile 并同步更新。1. 安装后运行 doxygen -g 生成配置,doxygen 执行构建;2. 使用 /// 或 /** 注释,配合 @brief、@param 等标签;3. 配置 project_name、input、extract_all 等关键项;4. 将 doxyfile 纳入版本控制,集成到 ci 和开发流程中。

如何使用doxygen为c++代码自动生成文档【项目规范】

Doxygen 是 C++ 项目最主流的文档生成工具,它能从源码注释中自动提取结构化文档(HTML、PDF、XML 等),关键在于写对注释格式、配好配置、保持代码与文档同步。

1. 安装与基础配置

在 Ubuntu/Debian 上执行 sudo apt install doxygen doxygen-latexmacOS 用户可用 brew install doxygen;Windows 推荐下载官方安装包。安装后进入项目根目录,运行:

  • doxygen -g Doxyfile:生成默认配置文件
  • doxygen Doxyfile:按配置生成文档(输出在 html/latex/ 目录)

建议将 Doxyfile 提交到版本库,并在 CI 中加入 doxygen 步骤,确保每次 PR 都能检查文档完整性。

2. 注释规范:让 Doxygen “看得懂”

Doxygen 不解析普通注释,只识别以 /**////*! 开头的特殊注释块。推荐统一用 ///(简洁)或 /**(支持多行+富文本)。

立即学习C++免费学习笔记(深入)”;

SumiNote
SumiNote

一款服务留学生的AI学习神器

下载
  • 类/结构体:在 classstruct 关键字前写完整说明,可用 @brief 分离简述和详述
  • 函数:在声明前注释,用 @param 描述每个参数,@return 说明返回值,@throw 标明异常
  • 成员变量:简单说明用途即可,如 /// 毫秒级时间戳,自 Unix 纪元起

示例:

/// @brief 计算两点间欧氏距离
/// @param p1 第一个点(x, y)
/// @param p2 第二个点(x, y)
/// @return 距离值,非负浮点数
double euclidean_distance(const Point& p1, const Point& p2);

3. 配置文件关键项调优

打开 Doxyfile,重点修改以下字段(大小写敏感):

  • PROJECT_NAME = "MyCppLib":项目名,显示在首页标题
  • PROJECT_NUMBER = "v1.2.0":版本号,建议与 git tag 同步
  • INPUT = ./src ./include:指定源码路径(支持通配符,如 ./src/*.h *.cpp
  • RECURSIVE = YES:递归扫描子目录
  • EXTRACT_ALL = NO:设为 NO 可避免未注释符号出现在文档中(更严谨)
  • GENERATE_HTML = YESGENERATE_LATEX = NO:按需开关输出格式
  • QUIET = YES:减少构建日志干扰 CI 输出

4. 集成进开发流程

文档不是“一次性任务”,而是代码的一部分:

  • .gitignore 中排除 html/latex/xml/ 等生成目录,只保留 Doxyfile
  • MakefileCMakeLists.txt 中添加 docs 目标,例如:make docs 执行 doxygen Doxyfile
  • PR 模板中加入检查项:“新增/修改的公共接口是否已补充 Doxygen 注释?”
  • 配合 clang-format 和 cpplint,把文档质量纳入静态检查环节

不复杂但容易忽略:每次重构接口时,顺手更新对应注释——这是维持文档可信度的核心习惯。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

887

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

459

2024.06.27

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1945

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2119

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1165

2024.11.28

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

490

2025.06.09

golang结构体方法
golang结构体方法

本专题整合了golang结构体相关内容,请阅读专题下面的文章了解更多。

202

2025.07.04

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1876

2023.10.19

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

59

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

AngularJS教程
AngularJS教程

共24课时 | 4.1万人学习

CSS教程
CSS教程

共754课时 | 41.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号