Doxygen 使用指南

news2025/2/12 21:27:29

Doxygen 是一个文档生成工具,可以从源代码中的注释生成高质量的文档,支持多种编程语言(如 C/C++、Python、Java 等)。以下是 Doxygen 的基本使用方法。


1. 安装 Doxygen

1.1 下载 Doxygen
  1. 访问 Doxygen 官网。
  2. 根据操作系统选择合适的版本并安装:
    • Windows: 提供可执行安装包。
    • Linux: 使用包管理器安装,例如 apt install doxygen
    • macOS: 使用 Homebrew 安装:brew install doxygen
1.2 安装 Graphviz(可选)

Graphviz 可以用来生成类图、调用图等。

  • Graphviz 下载

安装完成后,将 dot 命令路径添加到环境变量中。
在这里插入图片描述


2. 准备代码

确保源代码中包含标准的注释格式(如 Doxygen 风格),以下是 C++ 的注释示例:

/**
 * @brief 计算两个整数的和
 * @param a 第一个整数
 * @param b 第二个整数
 * @return 两个整数的和
 */
int add(int a, int b) {
    return a + b;
}

3. 配置 Doxygen

3.1 创建配置文件
  1. 在项目根目录运行以下命令生成配置文件:

    doxygen -g
    

    此命令会生成一个 Doxyfile,即 Doxygen 的配置文件。

  2. 修改配置文件
    打开 Doxyfile,根据需要编辑以下内容:

    • PROJECT_NAME:设置项目名称。
      PROJECT_NAME = "MyProject"
      
    • OUTPUT_DIRECTORY:指定生成文档的输出目录。
      OUTPUT_DIRECTORY = docs
      
    • INPUT:指定源文件目录。
      INPUT = src
      
    • GENERATE_HTML:启用 HTML 文档生成。
      GENERATE_HTML = YES
      
    • GENERATE_LATEX:启用 PDF 文档生成(需要 LaTeX 环境)。
      GENERATE_LATEX = NO
      
    • DOT_PATH:如果安装了 Graphviz,设置 dot 命令路径以生成类图和调用图。
      HAVE_DOT = YES
      DOT_PATH = /path/to/graphviz/bin
      

4. 生成文档

运行以下命令生成文档:

doxygen Doxyfile

成功运行后,docs 目录中会生成文档:

  • HTML 文档docs/html/index.html
  • PDF 文档(如果启用 LaTeX):需要进入 LaTeX 文件夹手动编译。

打开 index.html 查看生成的 HTML 文档。
在这里插入图片描述


5. 添加注释

5.1 基本注释格式

Doxygen 支持多种注释格式,以下是常见示例:

  1. 文件注释

    /**
     * @file main.cpp
     * @brief 主程序入口
     */
    
  2. 类注释

    /**
     * @brief 表示一个简单的矩形类
     */
    class Rectangle {
    public:
        /**
         * @brief 构造函数
         * @param w 矩形的宽度
         * @param h 矩形的高度
         */
        Rectangle(double w, double h);
    
        /**
         * @brief 获取矩形的面积
         * @return 矩形的面积
         */
        double getArea() const;
    
    private:
        double width;  ///< 矩形的宽度
        double height; ///< 矩形的高度
    };
    
  3. 函数注释

    /**
     * @brief 打印一个问候语
     * @param name 用户的名字
     */
    void sayHello(const std::string& name);
    
5.2 常用 Doxygen 标签
标签描述
@brief简短描述
@param描述函数参数
@return描述返回值
@file文件级别注释
@class类级别注释
@deprecated标记函数或类已过时
@see参考相关函数或类

6. 高级功能

6.1 类图和调用图

启用 Graphviz 后,Doxygen 会自动生成类图和调用图,图形会嵌入到 HTML 文档中。

  • 调用图:显示函数的调用关系。
  • 被调用图:显示函数被哪些函数调用。

确保以下选项启用:

HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
6.2 多语言支持

通过修改 LANGUAGE 选项支持多种编程语言(如 C++、Python、Java):

OPTIMIZE_OUTPUT_FOR_C = YES

7. 集成到项目

7.1 使用 CMake 自动生成文档

在 CMake 文件中添加以下内容:

find_package(Doxygen REQUIRED)

set(DOXYGEN_INPUT_DIR "${CMAKE_SOURCE_DIR}/src")
set(DOXYGEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/docs")

set(DOXYGEN_CONFIG_FILE "${CMAKE_BINARY_DIR}/Doxyfile")

add_custom_target(doc
    COMMAND doxygen ${DOXYGEN_CONFIG_FILE}
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    COMMENT "Generating API documentation with Doxygen"
    VERBATIM)

运行 make doc 即可生成文档。


8. 常见问题

8.1 无法找到 dot 命令
  • 确保安装了 Graphviz,并将其路径添加到环境变量中。
  • 修改 Doxyfile 中的 DOT_PATH 选项。
8.2 中文字符显示问题

Doxyfile 中的编码设置为 UTF-8:

INPUT_ENCODING = UTF-8

9. 总结

Doxygen 是一个功能强大的文档生成工具,结合良好的代码注释,可以大大提高项目的可维护性。使用 Doxygen,您可以轻松生成包含类图、调用关系图的 HTML 和 PDF 文档,并将其集成到项目的 CI/CD 管道中。

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

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

相关文章

Jensen-Shannon Divergence:定义、性质与应用

一、定义 Jensen-Shannon Divergence&#xff08;JS散度&#xff09;是一种衡量两个概率分布之间差异的方法&#xff0c;它是Kullback-Leibler Divergence&#xff08;KL散度&#xff09;的一种对称形式。JS散度在信息论、机器学习和统计学等领域中具有广泛的应用。 给定两个概…

一个特别的串口通讯

背景 设备是EPICS流式细胞仪&#xff0c;这个设备的控制系统是在DOS系统上的。数据存储在硬盘上&#xff0c;不带串口通讯功能。我们遇到了这个设备后&#xff0c;就开发了一个DOS下的执行程序通过串口&#xff0c;将最新的数据自动上传到服务器上。 编译工具 Turbo C 数据…

4.系统学习-集成学习

集成学习 前言Bias and Variance过拟合&#xff08;overfitting&#xff09;与欠拟合&#xff08;underfitting&#xff09;集成学习为什么有效&#xff1f;Blending 模型集成Stakcing 模型集成Bagging模型集成Bagging 模型集成算法流程&#xff1a;Boosting模型集成作业 前言 …

电商项目高级篇07-redisson分布式锁

redisson分布式锁 1、引入maven依赖2、config类3、可重入锁设计 1、引入maven依赖 <!--引入redisson--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></depend…

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器&#xff0c;最初作为HTTP服务器开发&#xff0c;主要用于服务静态内容如HTML文件、图像、视…

递归算法常见问题(Java)

问题&#xff1a;斐波那契数列,第1项和第2项都为1&#xff0c;后面每一项都为相邻的前俩项的和,求第n个数 解法&#xff1a;每一个数都为前俩个数之和&#xff0c;第1项和第2项都为1&#xff0c;所以写 方法f1(n)即为求第n个数&#xff0c;那么f1(n-1)为求第n-1个数&#xff0…

SpringBoot + HttpSession 自定义生成sessionId

SpringBoot HttpSession 自定义生成sessionId 业务场景实现方案 业务场景 最近在做用户登录过程中&#xff0c;由于默认ID是通过UUID创建的&#xff0c;缺乏足够的安全性&#xff0c;决定要自定义生成 sessionId。 实现方案 正常的获取session方法如下&#xff1a; HttpSe…

【流量、洪水数据下载】网站介绍和下载经验....不断更新!

EarthData 介绍 NASA:链接 数据下载 视频教程:Discover and Access Earth Science Data Using Earthdata Search 数据下载需要注册,已经被卡在邮箱验证上【2024-12-26】… Essential Climate Variables——【The Global Climate Observing System(GCOS) 介绍 其是支…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CI…

少儿编程在线培训系统:客户服务与学习支持

2.1 VUE技术 VUE它是由HTML代码&#xff0c;配上嵌入在HTML代码里面的Java代码组成的应用于服务器端的语言&#xff0c;使用VUE进行开发能够更加容易区分网页逻辑以及网页设计内容&#xff0c;让程序员开发思路更加清晰化&#xff0c;VUE在设计组件时&#xff0c;它是可以重用的…

流批一体向量化计算引擎 Flex 在蚂蚁的探索和实践

编者按&#xff1a;Flex是蚂蚁数据部自研的一款流批一体的向量化引擎&#xff0c;Flex是Fink和Velox的全称&#xff0c;也是Flexible的前缀&#xff0c;被赋予了灵活可插拔的寓意。本文将重点从向量化技术背景、Flex架构方案和未来规划三个方面展开论述。 作者介绍&#xff1a;…

upload-labs关卡记录11

先上传一个一句话木马试试&#xff0c;居然可以上传成功&#xff0c;复制图片链接&#xff0c;在另一个窗口打开&#xff1a; 会发现&#xff0c;我们明明上传的是shell.php&#xff0c;但是这里就是没有了php,这样我们在执行我们相关的语句的时候就无法执行了&#xff1a; 就…

WebRTC服务质量(08)- 重传机制(05) RTX机制

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…

借助 obdiag,让 OceanBase 参数和变量的对比更简单

本文将介绍 obdiag 工具中参数对比和变量对比功能的适用场景和试用方法。​​​​​​​ obdiag 参数和变量对比功能的适用场景 参数对比功能适用场景 不同observer对于同一参数允许配置不同的值&#xff0c;实际生产环境中&#xff0c;用户可能因多种原因在不同observer上为同…

Net9解决Spire.Pdf替换文字后,文件格式乱掉解决方法

官方文档 https://www.e-iceblue.com/Tutorials/Spire.PDF/Program-Guide/Text/Find-and-replace-text-on-PDF-document-in-C.html C# 在 PDF 中查找替换文本 原文件如下图&#xff0c;替换第一行的新编码&#xff0c;把41230441044替换为41230441000 替换代码如下&#xff…

VBA技术资料MF246:将工作表中形状复制到WORD文档

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

一次医院RIS系统的升级

2020-03-11 目录 数据库升级... 1 数据结构升级... 1 系统配置... 2 WEB服务器准备... 3 启动ASP.NET State Service服务... 3 检查IIS. 4 发布站点... 4 添加应用程序池... 4 发布网站... 5 处理打印模板... 6 web.config的配置... 6 处理图片文件目录... 6 修改W…

显示 Windows 任务栏

显示 Windows 任务栏 1. 取消勾选自动隐藏任务栏2. 重启 Windows 资源管理器References 1. 取消勾选自动隐藏任务栏 Windows 任务栏具有自动隐藏功能&#xff0c;不使用时自动隐藏&#xff0c;使用时显示。 鼠标右键单击桌面上的空白区域&#xff0c;个性化 -> 任务栏。不…

【Unity3D】Jobs、Burst并行计算裁剪Texture3D物体

版本&#xff1a;Unity2019.4.0f1 PackageManager下载Burst插件(1.2.3版本) 利用如下代码&#xff0c;生成一个Texture3D资源&#xff0c;它只能脚本生成&#xff0c;是一个32*32*32的立方体&#xff0c;导出路径记得改下&#xff0c;不然报错。 using UnityEditor; using Uni…

轻量级安全云存储方案Hoodik

什么是 Hoodik &#xff1f; Hoodik 是一款轻量级、安全且自托管的云存储解决方案。它采用 Rust 和 Vue 设计和构建&#xff0c;专注于端到端加密&#xff0c;保护您的数据免受窥探和黑客的侵害。Hoodik 支持文件上传和下载&#xff0c;让您可以轻松地与其他用户共享文件。简单…