当前位置: 首页 > news >正文

Doxygen入门指南:从注释到自动文档

Doxygen 入门指南:从注释到自动文档

Doxygen 是一款用于生成代码文档的工具,支持 C、C++、Python 等多种语言,尤其适合 C/C++ 项目。本文将介绍如何使用 Doxygen 规范注释并生成 API 文档。

一、安装 Doxygen

1. Windows

  • 下载安装包:Doxygen 官网(选择 doxygen-<version>.setup.exe
  • 安装时勾选 doxywizard(图形化配置工具,推荐新手使用)

2. Linux

# Ubuntu/Debian
sudo apt-get install doxygen graphviz  # graphviz 用于生成图表
# CentOS
sudo yum install doxygen graphviz

3. macOS

brew install doxygen graphviz

二、基本注释规则

Doxygen 通过识别特定格式的注释生成文档,核心是 /\** ... \*/ 风格的注释块,配合标签(@tag)描述代码信息。

1. 函数 / 方法注释

/*** @brief 计算两个整数的和* * 支持正数、负数和零的加法运算,返回结果不会溢出(假设输入在 int 范围内)* * @param a 第一个加数* @param b 第二个加数* @return 两数之和(int 类型)* @note 若输入超出 int 范围,可能导致未定义行为*/
int add(int a, int b) {return a + b;
}

2. 类 / 结构体注释

/*** @brief 表示二维坐标的结构体* * 存储 x 和 y 坐标,提供基础的坐标运算方法*/
struct Point {int x;  ///< x 坐标(成员变量注释用 ///<)int y;  ///< y 坐标/*** @brief 初始化坐标* @param x_ x 坐标值* @param y_ y 坐标值*/Point(int x_, int y_) : x(x_), y(y_) {}
};

3. 文件头部注释

每个 .h.cpp 文件建议添加头部注释,说明文件功能:

/*** @file math_utils.h* @brief 数学工具函数集合* * 包含加法、减法、乘法等基础运算,以及向量、矩阵操作* @author 你的名字* @date 2024-05-01*/

三、常用标签速查表

标签用途示例
@brief简短描述(一句话功能说明)@brief 计算绝对值
@param描述函数参数@param num 待计算的数字
@return描述返回值@return 非负结果
@note补充说明(注意事项)@note 输入不能为nullptr
@warning警告信息(危险操作)@warning 此函数会修改原始数组
@file标记文件注释@file string_utils.h
@author作者信息@author 张三 <zhangsan@example.com>
@date日期@date 2024-05-01
@see关联内容(参考其他函数 / 类)@see add()

注释

四、生成文档步骤

方法 1:使用 doxywizard(图形化工具)

  1. 打开 doxywizard(Windows 可在开始菜单找到,Linux/macOS 终端输入 doxywizard
  2. Step 1: 配置输入输出
    • Working directory:选择项目根目录
    • Input:添加代码目录(如 ./src
    • Output directory:设置文档输出路径(如 ./docs
  3. Step 2: 选择输出格式
    • Output 标签页勾选 HTML(必选)和 LaTeX(如需 PDF)
  4. Step 3: 生成文档
    • 点击 Run doxygen,等待生成完成
    • 打开 ./docs/html/index.html 查看文档

方法 2:使用命令行(推荐熟练后使用)

  1. 在项目根目录创建配置文件 Doxyfile :

    doxygen -g Doxyfile  # 生成默认配置
    
  2. 编辑Doxyfile关键配置(可选,默认也可生成文档):

    PROJECT_NAME           = "OL库"  # 项目名称
    INPUT                  = ./src   # 代码目录
    OUTPUT_DIRECTORY       = ./docs  # 文档输出目录
    RECURSIVE              = YES     # 递归处理子目录
    GENERATE_HTML          = YES     # 生成HTML文档
    
  3. 生成文档:

    doxygen Doxyfile  # 执行配置文件
    
  • 下面是采用我开源的OL库生成的开发文档示例(项目地址:https://github.com/1613661434/OL.git)
    Doxygen生成OL库开发文档

五、高级技巧

  1. 生成调用关系图
    Doxyfile 中开启:

    HAVE_DOT               = YES
    CALL_GRAPH             = YES
    CALLER_GRAPH           = YES
    

    需提前安装 graphviz(见步骤一)。

  2. 忽略不需要的代码
    /// @cond/// @endcond 包裹无需生成文档的代码:

    /// @cond
    // 内部辅助函数,不对外暴露
    static void helper() {}
    /// @endcond
    
  3. 集成到 CMake 构建流程
    CMakeLists.txt 中添加:

    find_package(Doxygen)
    if(DOXYGEN_FOUND)add_custom_target(docsCOMMAND doxygen DoxyfileWORKING_DIRECTORY ${CMAKE_SOURCE_DIR}COMMENT "生成API文档")
    endif()
    

    之后可通过 make docs(Linux)或 cmake --build . --target docs 生成文档。

六、常见问题

  • 注释不生效?
    确保注释块以 /** 开头(不是 /*//),且标签拼写正确(区分大小写)。
  • 中文乱码?
    Doxyfile 中设置 DOXYFILE_ENCODING = UTF-8OUTPUT_LANGUAGE = Chinese
  • 文档缺少函数?
    检查函数是否在 .h 头文件中声明(Doxygen 通常优先解析头文件)。
http://www.dtcms.com/a/569110.html

相关文章:

  • Docker 部署 Elasticsearch 8.12 + Kibana + Nginx 负载均衡
  • yolo 训练 动态改变类别
  • SQL大表关联优化全攻略
  • 第五章:构建用户界面(UMG) - 游戏内HUD
  • CSS 雪碧图和 SVG 雪碧图的原理和区别
  • 网站底部代码特效邢台网红隧道
  • 网站降权表现营销型公司网站有哪些
  • 评估指标+数据不匹配+贝叶斯最优误差(分析方差和偏差)+迁移学习+多任务学习+端到端深度学习
  • 外国食品优秀设计网站做网站电话销售
  • 构建下一代法律智能助手:需求分析、资源整合与系统设计
  • Oracle AWR案例分析:精准定位SQL执行计划切换的时间点
  • 2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
  • abpVnext 获取token报错,配置文件从sqlerver切换到oracle,再切换回来sqlerver无法获取token
  • 成都哪里有做网站的公司wordpress在本地搭建
  • C++进阶:(四)set系列容器的全面指南
  • 【Java零碎知识点】----- java.util.Random 与 Math.random()
  • 补充内容:YOLOv5损失函数解析+代码阅读
  • 北仑网站建设培训学校游戏开发需要什么学历
  • 高端装备制造提速,紧固件标准化与智能化升级成为行业新焦点
  • 6项提高电机制造质量的电气测试方案
  • 09_FastMCP 2.x 中文文档之FastMCP高级功能服务器组成详解
  • 工业之“眼”的进化:基于MEMS扫描的主动式3D视觉如何驱动柔性制造
  • 基于管理会计的制造企业运营优化虚拟仿真实验
  • 工业制造领域的ODM、OEM、EMS、JDM、CM、OBM都是啥
  • 建设网站要用什么软件.net程序员网站开发工程师
  • day07(11.4)——leetcode面试经典150
  • java源代码、字节码、jvm、jit、aot的关系
  • JVM 垃圾收集器介绍
  • springcloud:理解springsecurity安全架构与认证链路(二)RBAC 权限模型与数据库设计
  • 自适应网站建设电话网站dns错误