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

Doxygen 使用指南

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(docCOMMAND 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 管道中。

相关文章:

Doxygen 使用指南

Doxygen 是一个文档生成工具&#xff0c;可以从源代码中的注释生成高质量的文档&#xff0c;支持多种编程语言&#xff08;如 C/C、Python、Java 等&#xff09;。以下是 Doxygen 的基本使用方法。 1. 安装 Doxygen 1.1 下载 Doxygen 访问 Doxygen 官网。根据操作系统选择合适…...

设计模式与游戏完美开发(2)

更多内容可以浏览本人博客&#xff1a;https://azureblog.cn/ &#x1f60a; 该文章主主题内容均来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式&#xff08;Facade&#xff09; 一、游戏子功能的整合 一个游戏程序常常由内部数个不…...

Coroutine 基础三 —— 结构化并发(二)

1、协程的结构化异常管理 如果一个协程抛异常&#xff0c;它所在的整个协程树上的其他协程&#xff08;向上是父协程到根协程&#xff0c;向下是所有后代协程&#xff09;都会被取消。因此协程发生异常的后果是十分严重的。 先讲原理&#xff0c;再说解决方案。 协程异常的处…...

GXUOJ-算法-第一次作业

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…...

Springboot项目Druid运行时动态连接多数据源的功能

项目支持多数据库连接是个很常见的需求&#xff0c;这不仅是要在编译前连已经知道的多个数据库&#xff0c;有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...

字符串匹配——KMP算法

前言 刷到字符串匹配的力扣题了【28. 实现 strStr() 】&#xff0c;这题简单吧用库函数做就可以&#xff0c;说难吧&#xff0c;就得引出大名鼎鼎的线性匹配算法——KMP。 目录 KMP 算法背景与原理算法优势 前缀表1. 构建Next数组2. 搜索匹配 KMP 算法背景与原理 KMP&#x…...

Qt开发技术【下拉复选框 MultiSelectComboBox 自定义全选项】

继承ComboBox完成下拉复选框 自定义全选项 效果图 整个控件继承于QCombobox类。主要修改QLineEdit、QListWidget这两部分&#xff0c;QComboBox提供如下接口&#xff0c;可以将这两部分设置为新建的QLineEdit、QListWidget对象 CMultiSelectComboBox::CMultiSelectComboBo…...

20_HTML5 SSE --[HTML5 API 学习之旅]

HTML5 Server-Sent Events (SSE) 是一种技术&#xff0c;它允许服务器向浏览器推送更新。与传统的轮询不同&#xff0c;SSE提供了真正的单向实时通信通道&#xff1a;服务器可以主动发送数据到客户端&#xff0c;而不需要客户端发起请求。这对于实现实时更新的应用非常有用&…...

jetson Orin nx + yolov8 TensorRT 加速量化 环境配置

参考【Jetson】Jetson Orin NX纯系统配置环境-CSDN博客 一 系统环境配置&#xff1a; 1.更换源&#xff1a; sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list2.更新源&#xff1a; sudo apt upgradesudo apt updatesudo apt dist-upgrade sudo apt-get updat…...

Android Studio IDE环境配置

​需要安装哪些东西&#xff1a; Java jdk Java Downloads | OracleAndroid Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android DevelopersAndroid Sdk 现在的Android Studio版本安装时会自动安装&#xff0c;需要注意下安装的路径Android Studio插件…...

PTA 7-2 0/1背包问题(回溯法) 作者 王东 单位 贵州师范学院

0/1背包问题。给定一载重量为W的背包及n个重量为wi、价值为vi的物体&#xff0c;1≤i≤n,要求重量和恰好为W具有最大的价值。 输入格式: 第一行输入背包载重量W及背包个数n&#xff0c;再依次输入n行&#xff0c;每行为背包重量wi和价值vi。 输出格式: 第一行输出装入背包内…...

Matlab环形柱状图

数据准备&#xff1a; 名称 数值 Aa 21 Bb 23 Cc 35 Dd 47 保存为Excel文件后&#xff1a; % Load data from Excel file filename data.xlsx; % Ensure the file is in the current folder or provide full path dataTable readtable(filena…...

【AI大模型】探索GPT模型的奥秘:引领自然语言处理的新纪元

目录 &#x1f354; GPT介绍 &#x1f354; GPT的架构 &#x1f354; GPT训练过程 3.1 无监督的预训练语言模型 3.2 有监督的下游任务fine-tunning &#x1f354; 小结 学习目标 了解什么是GPT.掌握GPT的架构.掌握GPT的预训练任务. &#x1f354; GPT介绍 GPT是OpenAI公…...

5.Python爬虫相关

爬虫 爬虫原理 爬虫&#xff0c;又称网络爬虫&#xff0c;是一种自动获取网页内容的程序。它模拟人类浏览网页的行为&#xff0c;发送HTTP请求&#xff0c;获取网页源代码&#xff0c;再通过解析、提取等技术手段&#xff0c;获取所需数据。 HTTP请求与响应过程 爬虫首先向…...

Windows系统上配置eNSP环境的详细步骤

华为eNSP&#xff08;Enterprise Network Simulation Platform&#xff09;是一款针对华为数通网络设备的网络仿真平台&#xff0c;用于辅助工程师进行网络技术学习、方案验证和故障排查等工作。以下是在Windows系统上配置eNSP环境的详细步骤&#xff1a; 1. 准备工作 下载安…...

Database.NET——一款轻量级多数据库客户端工具

文章目录 Database.NET简介下载使用使用场景总结 Database.NET简介 Database.NET 是一个功能强大且易于使用的数据库管理工具&#xff0c;适用于多种数据库系统。它为开发者和数据库管理员提供了一个统一的界面&#xff0c;可以方便地管理和操作不同类型的数据库。 支持的数据…...

新浪微博C++面试题及参考答案

多态是什么&#xff1f;请详细解释其实现原理&#xff0c;例如通过虚函数表实现。 多态是面向对象编程中的一个重要概念&#xff0c;它允许不同的对象对同一消息或函数调用做出不同的响应&#xff0c;使得程序具有更好的可扩展性和灵活性。 在 C 中&#xff0c;多态主要通过虚函…...

计算机视觉目标检测-1

文章目录 摘要Abstract1.目标检测任务描述1.1 目标检测分类算法1.2 目标定位的简单实现思路1.2.1 回归位置 2.R-CNN2.1 目标检测-Overfeat模型2.1.1 滑动窗口 2.2 目标检测-RCNN模型2.2.1 非极大抑制&#xff08;NMS&#xff09; 2.3 目标检测评价指标 3.SPPNet3.1 spatial pyr…...

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…...

java常用类(上)

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;javase &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 一、包装类 1.1包装类…...

m3pi嵌入式机器人底层驱动解析:HAL/LL混合架构与实时电机控制

1. m3pi嵌入式机器人平台底层驱动技术解析m3pi是面向教育与工程验证场景的轻量级嵌入式机器人控制平台&#xff0c;其名称源于“mbed 3pi”&#xff0c;表明其硬件架构继承自Pololu 3pi智能小车&#xff0c;并深度适配ARM Cortex-M系列MCU&#xff08;主要为STM32F4系列&#…...

号令天下:守财数字能量号组413与313能守财吗

在数字能量学的体系中&#xff0c;延年磁场是主导守财的核心能量&#xff0c;天医磁场主打招财纳福&#xff0c;生气磁场侧重拓展人脉&#xff0c;二者并不具备直接的守财属性。像 413、313 这类组合&#xff0c;核心作用集中在招财聚财方面&#xff0c;守财能力相对薄弱&#…...

长远赋能——TVA系统助力汽车零部件企业智能化转型升级

「本文已用流量券推广&#xff0c;欢迎收藏 关注」在工业4.0浪潮推动下&#xff0c;智能化转型升级已成为汽车零部件企业实现高质量发展的必由之路&#xff0c;而质量检测作为生产环节的核心组成部分&#xff0c;其智能化水平直接决定了企业的转型升级成效。TVA高精度AI智能视…...

用Unity 2D碰撞体+Effector,5分钟实现《星露谷物语》式的磁铁吸附效果

用Unity 2D碰撞体Effector实现《星露谷物语》式磁铁吸附效果 在《星露谷物语》这类农场模拟游戏中&#xff0c;角色靠近可收集物品时自动吸附的设计极大提升了操作流畅度。这种看似简单的交互背后&#xff0c;其实隐藏着Unity物理系统的巧妙运用。本文将手把手教你如何用2D碰撞…...

解放你的文件夹:智能文件整理Agent,让杂乱文件一键归位

核心功能&#xff1a;不止是“按类型分类”市面上很多文件整理工具只能简单按后缀名归类&#xff0c;但实际使用中我们的需求远不止于此——比如按项目维度、按时间前缀、按业务场景整理&#xff0c;甚至要区分大文件/近期文件避免误操作。这款工具的核心亮点在于&#xff1a;1…...

如何高效提取Unity游戏资源:AssetStudio的完整实战指南

如何高效提取Unity游戏资源&#xff1a;AssetStudio的完整实战指南 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and additional…...

基于stm32的个人健康助手设计[单片机]-计算机毕业设计源码+LW文档

摘要&#xff1a;本文设计了一款基于STM32的个人健康助手&#xff0c;旨在帮助用户实时监测和管理的健康状况。该系统以STM32单片机为核心&#xff0c;整合了DS18B20温度采集模块、血氧检测模块、独立按键和供电电路等硬件组件&#xff0c;并通过OLED显示屏和蜂鸣器实现信息展示…...

Snap.Hutao:如何用这款开源工具箱优化你的原神游戏体验?

Snap.Hutao&#xff1a;如何用这款开源工具箱优化你的原神游戏体验&#xff1f; 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trendin…...

YimMenu终极指南:GTA5增强工具完整使用教程

YimMenu终极指南&#xff1a;GTA5增强工具完整使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu Y…...

Qwen3-4B Instruct-2507企业级落地:集成至内部OA系统实现自然语言工单处理

Qwen3-4B Instruct-2507企业级落地&#xff1a;集成至内部OA系统实现自然语言工单处理 1. 引言&#xff1a;当工单处理遇上大语言模型 想象一下这个场景&#xff1a;公司内部OA系统的客服工单界面&#xff0c;每天涌入上百条来自不同部门的请求。有员工问&#xff1a;“我的打…...