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

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

  • Chapter1 Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
    • 1、 Doxygen简介
      • 1. 安装Doxygen
      • 1)方法一:
      • 2)方法二:
      • 2. doxygen注释自动生成插件
      • 3. doxygen注释基本语法
      • 4. doxygen的生成
  • Chapter2 Vscode配置Doxygen Doumentation Generator插件实现自动补全注释
    • (1) 在插件市场下载 Doxygen Doumentation Generator插件
    • (2) 配置插件
    • (3) Clion已经集成了Doxygen语法插件
    • (4) Build选型关键设置
  • Chapter3 Doxygen注释规范
  • Chapter4 ubuntu 使用doxygen生成软件文档[Vscode 配置doxygen插件方法]


Chapter1 Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

原文链接:https://blog.csdn.net/youlinhuanyan/article/details/144009219

1、 Doxygen简介

Doxygen 是一个由 C++ 编写的、开源的、跨平台的文档生成系统。最初主要用于生成 C++ 库的 API 文档,但目前又添加了对 C、C#、Java、Python、Fortran、PHP 等语言的支持。其从源代码中提取注释,并生成多种输出格式,如HTML、PDF、LaTeX、RTF等,以帮助开发者创建易于阅读和理解的代码文档。

Doxygen 简化了另行编写文档带来的重复性劳动,将代码和文档的工作合二为一。经过 10 年的迭代,Doxygen 成为了 C/C++ 项目首选的文档生成工具。

官网地址:https://www.doxygen.nl/

1. 安装Doxygen

1)方法一:

ubuntu下apt命令快速安装

sudo apt-get install doxygen		// 安装doxygen
sudo apt-get install graphviz       // 安装文档中画图的软件
sudo apt-get install doxygen-gui    // 安装doxygen的配置界面

注意,如需在html的文档,中显示类图等关系图,需要安装graphviz库,安装命令如下

sudo apt-get install graphviz

且需要在Doxyfile配置文件中的DOT_PATH 指定graphviz的命令行路径

验证查看一下版本:

$ doxygen --version
1.9.1

2)方法二:

采用源码编译,则需要先下载源码,源码下载地址,点这里
https://github.com/doxygen/doxygen/releases

在这里插入图片描述
在这里插入图片描述
执行如下命令

cd doxygen-1.12.0
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/DOXYGEN ..  # 指定安装doxygen的用户目录为~/DOXYGEN
make
make install

添加到环境变量中

vim .bashrc
export PATH=$HOME/DOXYGEN/bin:$PATH

查看一下安装情况

doxygen --version

2. doxygen注释自动生成插件

  1. IDE中安装doxygen注释辅助生成插件
    正式标注前,介绍一款VsCode下的doxygen插件Doxygen Documentation Generator
    在这里插入图片描述
    2)配置插件的一些默认参数
    首先配置注释提示块的触发快捷方式,默认是/**触发的,打开插件面板,找到Doxygen Documentation 插件,点击配置图标,找到到Extension Settings
    在这里插入图片描述
    修改为如下///,当然,不修改使用默认的/**也是可以的
    在这里插入图片描述
    采用默认的///触发效果,在函数头输入///按下回车后如下:
    在这里插入图片描述
    采用默认的/**触发效果:
    在这里插入图片描述
    此外,还有很更多的默认参数,根据自己的需要进行配置,可以极大的提高效率,避免写注释时,大量的复制粘贴操作,如下可配置默认的作者、邮箱等;
    在这里插入图片描述
    可在配置中,修改如下内容
    在这里插入图片描述
    注意,上面的注释辅助生成插件不是必须的,不同的IDE环境,可能有不同的插件;即使不安装这个,也不影响doxygen的使用,只是需要手动按doxygen的注释语法,逐一手动输入即可;

3. doxygen注释基本语法

/*** @file main.cpp* @author your name (you@domain.com)* @brief * @version 0.1* @date 2024-11-24* * @copyright Copyright (c) 2024* */#include <iostream>/*** @brief main 函数* * @param argc * @param argv * @return int */
int main(int argc, char** argv)
{std::cout<< "HelloWorld"<< std::endl;return 0;
}/*** @brief helloworld fun* * @param num * @param str * @return int */
int helloWorld(int num, char* str) {return 0;
}/*** @brief 这个一个Hello -class类* */
class Hello
{
public:/*** @brief num变量* */int num;/*** @brief index介绍* */int index;/*** @brief Construct a new Hello object* * @param a * @param b */Hello(int a, int b);Hello();~Hello();
};/*** @brief Hello2* */
class Hello2: public Hello
{
public:/*** @brief Construct a new Hello 2 object* * @param a * @param b */Hello2(int a, int b);/*** @brief Destroy the Hello 2 object* */~Hello2();
};

4. doxygen的生成

首先应生成一个doxygen的配置文件,使用如下命令:

doxygen -g # 默认创建文件名为Doxyfile
# doxygen -g dox-config-file # 指定文件名

通过该配置文件,可以指定生成doxygen文档的输入、输出、生成范围等

以下是一些常用的Doxyfile配置选项:
在这里插入图片描述

执行生成命令,生成文档

# 指定默认配置文件Doxfile,生成文档
doxygen Doxyfile

默认情况下,将生成两类文档html、latex
在这里插入图片描述
如无需要latex可在Doxyfile配置文档中配置GENERATE_LATEX = NO后,如下所示
在这里插入图片描述
完成!

Chapter2 Vscode配置Doxygen Doumentation Generator插件实现自动补全注释

原文链接

(1) 在插件市场下载 Doxygen Doumentation Generator插件

(2) 配置插件

设置->settings.json, 编辑 settings.json文件,添加如下内容
在这里插入图片描述

    // 注释"doxdocgen.c.triggerSequence": "/**",   // 触发自动注释的生成"doxdocgen.c.commentPrefix": " * ",     // 注释行的前缀"doxdocgen.c.firstLine": "/**",         // 注释行的首行"doxdocgen.c.lastLine": " */",          // 注释行的尾行// file注释顺序"doxdocgen.file.fileOrder": ["copyright","empty","file","brief","author","version","date",// "custom"    // 自定义选项],// file自定义选项"doxdocgen.file.customTag": ["自定义选项",],"doxdocgen.file.copyrightTag": [                                // file注释"@copyright Copyright (c) {year}.."],"doxdocgen.generic.authorEmail":    "iotxiaohu@qq.com",         // {email}  样式"doxdocgen.generic.authorName":     "iotxiaohu",                // {author} 样式"doxdocgen.generic.dateFormat":     "YYYY-MM-DD",               // {date}   样式"doxdocgen.generic.dateTemplate":   "@date{indent:9}{date}",    // {date}   模板"doxdocgen.file.fileTemplate":      "@file{indent:9}{name}",    // {name}   模板"doxdocgen.generic.briefTemplate":  "@brief{indent:9}描述","doxdocgen.file.versionTag":        "@version{indent:9}0.1","doxdocgen.generic.authorTag":      "@author{indent:9}{author}({email})",// generic注释的内容和顺序"doxdocgen.generic.order": ["brief","empty","param","return",// "empty","author","date",// "custom",       // 自定义选项],// generic自定义选项"doxdocgen.generic.customTags": ["自定义选项",],"doxdocgen.cpp.tparamTemplate": "@tparam {param} ", // ???"doxdocgen.generic.paramTemplate": "@param{indent:9}{param}{indent:21}参数描述","doxdocgen.generic.returnTemplate": "@return{indent:9}{type} ","doxdocgen.generic.includeTypeAtReturn": true,      // return 中包含类型信息"doxdocgen.generic.boolReturnsTrueFalse": false,    // bool 返回值拆分成 true 和 false 两种情况"doxdocgen.generic.linesToGet": 4,                  // 回车后最多向下多少行去找函数声明"doxdocgen.generic.useGitUserName": false,          // {author} 是都根据 git config --get user.name 替换"doxdocgen.generic.useGitUserEmail": false,

(3) Clion已经集成了Doxygen语法插件

在函数前输入

/**

回车,就可以自动出现需要填写的内容.
但是clion的插件只对函数有用, 对文件开头没有用,那就自己添加吧.

(4) Build选型关键设置

在这里插入图片描述

Chapter3 Doxygen注释规范

原文链接

在这里插入图片描述

Chapter4 ubuntu 使用doxygen生成软件文档[Vscode 配置doxygen插件方法]

原文链接

在这里插入图片描述

相关文章:

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 Chapter1 Ubuntu下的DoxygenVScode实现C/C接口文档自动生成1、 Doxygen简介1. 安装Doxygen1&#xff09;方法一&#xff1a;2&#xff09;方法二&#xff1a;2. doxygen注释自动生成插件3. doxygen注释基本语法4. doxygen的生成…...

【字符串两大注意事项】

表达字符串的方式 1.双引号&#xff1a;"hello world" 2.字符指针&#xff1a;char* ptr "hello world" 3.字符数组&#xff1a;char arr[] "hello world"辨析 项目表示方式代表含义内存分布1“hello world”字符串字面量字符串常量就是数据…...

jmap命令详解

jmap 用于生成 heap dump 文件&#xff0c;如果不使用这个命令&#xff0c;还可以使用-XX:HeapDumpOnOutOfMemoryError参数来让虚拟机出现 OOM 的时候自动生成 dump 文件。 jmap 不仅可以生成 dump 文件&#xff0c;还可以查询finalize执行队列、Java 堆的详细信息&#xff0c…...

微机原理与接口技术期末大作业——4位抢答器仿真

在微机原理与接口技术的学习旅程中&#xff0c;期末大作业成为了检验知识掌握程度与实践能力的关键环节。本次我选择设计并仿真一个 4 位抢答器系统&#xff0c;通过这个项目&#xff0c;深入探索 8086CPU 及其接口技术的实际应用。附完整压缩包下载。 一、系统设计思路 &…...

FOC核心原理的C语言实现

概述 应用FOC算法&#xff0c;比如无人机、电动汽车或工业电机控制。因此&#xff0c;除了理论&#xff0c;还需要提供实用的实现步骤、常见问题及解决方案&#xff0c;比如如何获取电机的位置信息&#xff08;编码器或传感器&#xff09;&#xff0c;如何处理电流采样&#x…...

基于互联网+智慧水务信息化整体解决方案

智慧水务的概述与发展背景 智慧水务是基于互联网、云计算、大数据、物联网等先进技术&#xff0c;对水务行业的工程建设、生产管理、管网运营、营销服务及企业综合管理等业务进行全面智慧化管理的创新模式。它旨在解决水务企业分散经营、管理水平不高、投资不足等问题。 水务…...

【信息系统项目管理师-选择真题】2005下半年综合知识答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7~8题】【第9~10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题…...

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

第十一章 F - H 开头的术语

文章目录 第十一章 F - H 开头的术语文件流 (file stream)最终类 (final class)最终方法 (final method)最终属性 (final property)外键 (foreign key)基础 (foundation) 以 G 开头的术语全局 (global)全局数据库 (globals database)全局目录 (global directory)全局唯一标识符…...

深度研究新范式:通过Ollama和DeepSeek R1实现自动化研究

引言 在信息时代&#xff0c;海量数据的产生与传播速度前所未有地加快&#xff0c;这既为研究者提供了丰富的资源&#xff0c;也带来了信息筛选与处理的巨大挑战。 传统研究方法往往依赖于研究者的个人知识库、文献检索技能以及时间投入&#xff0c;但面对指数级增长的数据量…...

深度学习的应用

目录 一、机器视觉 1.1 应用场景 1.2 常见的计算机视觉任务 1.2.1 图像分类 1.2.2 目标检测 1.2.3 图像分割 二、自然语言处理 三、推荐系统 3.1 常用的推荐系统算法实现方案 四、图像分类实验补充 4.1 CIFAR-100 数据集实验 实验代码 4.2 CIFAR-10 实验代码 深…...

基于51单片机和WS2812B彩色灯带的流水灯

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码四、主函数总结 系列文章目录 前言 用彩色灯带按自己想法DIY一条流水灯&#xff0c;谁不喜欢呢&#xff1f; 所用单片机&#xff1a;STC15W204S &#xff08;也可以用其他1T单片机&#xff0c;例如&#xff0c;S…...

DFS(深度优先搜索)与回溯算法详解

DFS&#xff08;深度优先搜索&#xff09;与回溯算法详解 一、DFS 基础 1. 什么是DFS&#xff1f; 深度优先搜索&#xff08;Depth-First Search&#xff0c;DFS&#xff09;是一种用于遍历或搜索树或图的算法。其核心思想是&#xff1a; 一条路走到黑&#xff1a;从起点出发…...

服务器虚拟化技术详解与实战:架构、部署与优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 在现代 IT 基础架构中&#xff0c;服务器虚拟化已成为提高资源利用率、降低运维成本、提升系统灵活性的重要手段。通过服务…...

数据分析系列--②RapidMiner导入数据和存储过程

一、下载数据 二、导入数据 1. 在本地计算机中创建3个文件夹 2. 从本地选择.csv或.xlsx 三、界面说明 四、存储过程 1.保存 Congratulations, you are done. 一、下载数据 点击下载AssociationAnalysisData.xlsx数据集 二、导入数据 1. 在本地计算机中创建3个文件夹 2. 从…...

CSS 背景与边框:从基础到高级应用

CSS 背景与边框&#xff1a;从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码&#xff1a;设置背景颜色 1.2 背景图像示例代码&#xff1a;设置背景图像 1.3 控制背景平铺行为示例代码&#xff1a;控制背景平铺 1.4 调整背景图像大小示例代码&#xff1a;调整背景图像大小…...

国内外人工智能AI工具网站大全(一键收藏,应有尽有)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 国内外人工智能AI工具网站大全&#xff08;一键收藏&#xff0c;应有尽有&#xff09; 摘要一、AI写作工具二、AI图像工具2.1、常用AI图像工具2.2、AI图片插画生成2.3、AI图片背景移…...

Java中初步使用websocket(springBoot版本)

一、什么是websocket WebSocket是一种在Web应用程序中实现实时双向通信的协议。它为浏览器和服务器之间提供了一种持久连接&#xff0c;在一个连接上可以双向传输数据。相比传统的HTTP协议&#xff0c;WebSocket具有更低的延迟和更高的效率。 WebSocket使用了类似于握手的方式来…...

2025年大年初一篇,C#调用GPU并行计算推荐

C#调用GPU库的主要目的是利用GPU的并行计算能力&#xff0c;加速计算密集型任务&#xff0c;提高程序性能&#xff0c;支持大规模数据处理&#xff0c;优化资源利用&#xff0c;满足特定应用场景的需求&#xff0c;并提升用户体验。在需要处理大量并行数据或进行复杂计算的场景…...

K8S ReplicaSet 控制器

一、理论介绍 今天我们来实验 ReplicaSet 控制器&#xff08;也叫工作负载&#xff09;。官网描述如下&#xff1a; 1、是什么&#xff1f; ReplicaSet 副本集&#xff0c; 维护一组稳定的副本 Pod 集合。 2、为什么需要&#xff1f; 解决 pod 被删除了&#xff0c;不能自我恢…...

FreeRTOS学习 --- 任务调度

开启任务调度器 作用&#xff1a;用于启动任务调度器&#xff0c;任务调度器启动后&#xff0c; FreeRTOS 便会开始进行任务调度 该函数内部实现&#xff0c;如下&#xff1a; 1、创建空闲任务&#xff08;优先级最低&#xff09; 2、如果使能软件定时器&#xff0c;则创建定…...

【小鱼闪闪】单片机开发工具——米思齐软件下载安装(图文)

浏览器打开网址 mixly.org, 在软件平台选择mixly离线版。 最新版本为3.0&#xff0c;会支持audinio&#xff0c; ESP32、ESP8266 &#xff0c; 可以选择下载安装器或者完整版。 这里选择下载安装器&#xff0c;下载后运行“一键更新.bat”&#xff0c;即可自动下载最新版本的M…...

MFC开发,给对话框添加垂直滚动条并解决鼠标滚动响应的问题

无论在使用QT或者MFC进行界面开发时&#xff0c;都会出现在一个对话框里面存在好多的选项&#xff0c;导致对话框变得非常长或者非常大&#xff0c;就会显现的不美观&#xff0c;在这种情况下通常是添加一个页面的滚动条来解决这个问题&#xff0c;下面我们就来介绍给MFC的对话…...

动态规划DP 最长上升子序列模型 导弹防御模型(题目分析+C++完整代码实现)

概览检索 动态规划DP 最长上升子序列模型 导弹防御系统 原题链接 AcWiing 187. 导弹防御系统 题目描述 为了对抗附近恶意国家的威胁&#xff0c;R国更新了他们的导弹防御系统。 一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。 例如&#xff0…...

LevelDB 源码阅读:写入键值的工程实现和优化细节

读、写键值是 KV 数据库中最重要的两个操作&#xff0c;LevelDB 中提供了一个 Put 接口&#xff0c;用于写入键值对。使用方法很简单&#xff1a; leveldb::Status status leveldb::DB::Open(options, "./db", &db); status db->Put(leveldb::WriteOptions…...

药店药品销售管理系统的设计与实现

标题:药店药品销售管理系统的设计与实现 内容:1.摘要 摘要&#xff1a;本文介绍了药店药品销售管理系统的设计与实现。该系统旨在提高药店的运营效率和管理水平&#xff0c;通过信息化手段实现药品销售、库存管理、财务管理等功能。本文详细阐述了系统的需求分析、设计思路、技…...

人格分裂(交互问答)-小白想懂Elasticsearch

通过交互式追问了解一个中间件 ? 啥是Elasticsearch ! 分布式搜索和分析引擎 ? 为啥是分布式搜索&#xff0c;单体难道用不了吗 ? 实际上是说这个东西可以分布式部署 ! 单机可用但扩展性差&#xff0c;分布式通过分片、副本和负载均衡实现海量数据存储与高并发处理 ? 提…...

【论文投稿-第八届智能制造与自动化学术会议(IMA 2025)】HTML, CSS, JavaScript:三者的联系与区别

大会官网&#xff1a;www.icamima.org 目录 前言 一、HTML&#xff08;超文本标记语言&#xff09;&#xff1a;网页的骨架 HTML 的作用&#xff1a; 例子&#xff1a; 总结&#xff1a; 二、CSS&#xff08;层叠样式表&#xff09;&#xff1a;网页的外观设计 CSS 的…...

python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)

python | OpenCV小记&#xff08;一&#xff09;&#xff1a;cv2.imread&#xff08;f&#xff09;读取图像操作 1. 为什么 [:, :, 0] 提取的是第一个通道&#xff08;B 通道&#xff09;&#xff1f;OpenCV 的通道存储格式索引操作 [:, :, 0] 的解释常见误解 1. 为什么 [:, :,…...

网络工程师 (9)文件管理

一、树形目录结构 &#xff08;一&#xff09;定义与构成 树形目录结构由一个根目录和若干层子文件夹&#xff08;或称为子目录&#xff09;组成&#xff0c;它像一棵倒置的树。这棵树的根称为根文件夹&#xff08;也叫根目录&#xff09;&#xff0c;从根向下&#xff0c;每一…...