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

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

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
# sudo apt-get install doxygen-gui

注意,如需在html的文档,中显示类图等关系图,需要安装graphviz库,安装命令如下
sudo apt-get install graphviz
且需要在Doxyfile配置文件中的DOT_PATH 指定graphviz的命令行路径

验证查看一下版本:

$ doxygen --version
1.9.1

2)方法二:
采用源码编译,则需要先下载源码,源码下载地址,点这里
在这里插入图片描述

执行如下命令

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配置选项:

选项说明
INPUT指定要生成文档的源代码目录
RECURSIVE是否递归搜索子目录,设置为YES可以让Doxygen递归地搜索所有的源代码文件
FILE_PATTERNS源文件匹配
EXCLUDE不希望处理的文件
OUTPUT_DIRECTORY指定生成的文档的输出目录
PROJECT_NAME指定生成文档的工程名
OUTPUT_LANGUAGE指定输出文档的语言
GENERATE_HTML是否生成HTML报告
GENERATE_LATEX是否生成LATEX报告,如果不需要生成LaTeX文档,可以设置为NO
EXTRACT_PRIVATE是否解析类的私有变量
CLASS_DIAGRAMS是否生成类图
STRIP_FROM_PATH指定文件剥离路径
DOT_PATHGraphviz命令路径(如/usr/bin/dot)
HAVE_DOT开启类图
CALL_GRAPH调用图
CLASS_DIAGRAMS继承图
COLLABORATION_GRAPH协作图
INCLUDE_GRAPH包含图
GRAPHICAL_HIERARCHY & DIRECTORY_GRAPH依赖图
HAVE_DOT & DOT_GRAPH成员关系
NAMESPACE_GRAPH命名空间
ENABLED_SECTIONS全局变量

执行生成命令,生成文档

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

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

在这里插入图片描述
完成!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络——网络层

网络层的作用&#xff1a;在复杂的网络环境中确定一个合适的路径。 一.IP协议 IP存在的意义&#xff1a;IP地址提供一种能力&#xff0c;使得数据能够从主机B跨网络、可靠的送至主机A。 1.协议头格式 能够看出IP协议的格式与TCP协议存在很多相似之处&#xff0c;同样拥有4为首…

Shiro-550反序列化漏洞分析

&#x1f338; 环境配置 代码下载地址&#xff1a;https://codeload.github.com/apache/shiro/zip/refs/tags/shiro-root-1.2.4 下载完成之后&#xff0c;需要修改一下pom文件&#xff1a; 修改一下红色框中的配置。然后配置一下tomcat&#xff1a; 点击部署&#xff0c;然后…

【Rhino】【Python】Create a series of Blocks according to Value of object Property

文章目录 1. Complete Code Display2. Detailed Code Analysis2.1 Import and Setup2.2 Function Structure and Initial Setup2.3 Object Collection and Filtering2.4 Story Management System2.5 Locating Point Processing2.6 Object Organization by Story2.7 Block Creat…

CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

CSP/信奥赛C语法基础刷题训练&#xff08;23&#xff09;&#xff1a;洛谷P1217&#xff1a;[USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 151 …

【探寻密码的奥秘】-001:解开密码的神秘面纱

目录 1、密码学概述1.1、概念1.2、目的1.3、应用场景 2、密码学的历史2.1、第一时期&#xff1a;古代密码时代2.2、第二时期&#xff1a;机械密码时代2.3、第三时期&#xff1a;信息密码时代2.4、第四时期&#xff1a;现代密码时代 3、密码学的基本概念3.1、一般通信系统3.2、保…

文件操作详解(1)

1.文件&#xff0c;文件与流&#xff0c;文件指针 2.文件的打开与关闭 3.文件的读写 文件的顺序读写&#xff1a; &#xff08;1&#xff09;fgetc 和 fputc &#xff08;2&#xff09;fgets 和 fputs &#xff08;3&#xff09;fscanf 和 fprintf &#xff08;4&#x…

基于YOLOv8深度学习的人体姿态摔倒检测与语音报警系统(PyQt5界面+数据集+训练代码)

随着人口老龄化进程的加速&#xff0c;摔倒事故逐渐成为威胁老年人健康和安全的主要问题之一。研究表明&#xff0c;摔倒不仅可能导致老年人骨折、头部受伤等严重的身体损伤&#xff0c;还可能引发心理恐惧和行动能力下降&#xff0c;从而降低其生活质量和独立性。如何快速、准…

jmeter5.6.3安装教程

一、官网下载 需要提前配置好jdk的环境变量 jmeter官网&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 选择点击二进制的zip文件 下载成功后&#xff0c;默认解压下一步&#xff0c;更改安装路径就行(我安装在D盘) 实用jmeter的bin目录作为系统变量 然后把这…

差分进化算法原理与复现

目录 摘要1、算法原理1.1、种群初始化1.2、变异1.3、交叉1.4、选择 2、算法实现2.1、种群初始化2.2、变异2.3、交叉2.4、选择2.5、选取终代种群中最优秀个体 摘要 如何选取一组最佳的参数&#xff0c;使得代价函数值最优&#xff1f;这是优化算法做的事&#xff0c;一个直觉的…

搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)

在搜索场景中&#xff0c;BM25能计算每个文档与查询的匹配度&#xff0c;从中找出最相关的文档&#xff0c;并按相关性高低排序展示。 要理解BM25&#xff0c;需要掌握以下几个关键概念&#xff1a; 1. 词频&#xff08;Term Frequency, TF&#xff09;&#xff1a;某关键词在文…

C语言笔记(自定义类型:结构体、枚举、联合体 )

前言 本文对自定义类型的结构体创建、使用、结构体的存储方式和对齐方式&#xff0c;枚举的定义、使用方式以及联合体的定义、使用和存储方式展开叙述&#xff0c;如有错误&#xff0c;请各位指正。 目录 前言 1 结构体 1.1 结构体的声明 1.2 结构体的自引用 1.3 结构体变…

【C++】list模拟实现(详解)

本篇来详细说一下list的模拟实现&#xff0c;list的大体框架实现会比较简单&#xff0c;难的是list的iterator的实现。我们模拟实现的是带哨兵位头结点的list。 1.准备工作 为了不和C库里面的list冲突&#xff0c;我们在实现的时候用命名空间隔开。 //list.h #pragma once #…

数字化工厂 MES试点方案全解析(三)

目 录 三、试点实施步骤 需求分析与方案设计阶段 系统开发与测试阶段 系统部署与培训阶段 试点运行与优化阶段 总结与评估阶段 三、试点实施步骤 需求分析与方案设计阶段 1、成立由企业生产、工艺、质量、设备、IT 等多部门人员组成的项目团队&#xff0c;与 MES 供应商共…

ShuffleNet V2:高效卷积神经网络架构设计的实用指南

摘要 https://arxiv.org/pdf/1807.11164 当前&#xff0c;神经网络架构设计大多以计算复杂度的间接指标&#xff0c;即浮点运算数&#xff08;FLOPs&#xff09;为指导。然而&#xff0c;直接指标&#xff08;例如速度&#xff09;还取决于其他因素&#xff0c;如内存访问成本…

【Opencv学习】PART1-图像基础处理

目录 一、图像的读入、显示和保存 1、读入图像 imread函数 范例 显示控制参数 2、显示图像 imshow函数 范例 tips waitkey函数 含义 delay参数: tips destoryAllWindows函数 3、保存图像 imwrite函数 范例 实操 01-读入显示保存 代码 结果 二、图像处理入…

硬中断关闭后的堆栈抓取方法

一、背景 性能和稳定性是一个计算机工程里的一个永恒的主题。其中尤其稳定性这块的问题发现和问题分析及问题解决就依赖合适的对系统的观测的手段&#xff0c;帮助我们发现问题&#xff0c;识别问题原因最后才能解决问题。稳定性问题里尤其底层问题里&#xff0c;除了panic问题…

MT8768/MTK8768安卓核心板性能参数_联发科安卓智能模块开发方案

MT8768安卓核心板 是一款采用台积电12nm FinFET制程工艺的智能手机芯片。MT8768核心板不仅提供所有高级功能和出色体验&#xff0c;同时确保智能终端具备长电池寿命。该芯片提供了一个1600x720高清(20:9比例)分辨率显示屏&#xff0c;排除了清晰度和功耗之间的平衡问题。该芯片…

NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案

EasyNVR是基于端-边-云一体化架构的安防监控视频融合云平台&#xff0c;具有简单轻量的部署方式与多样的功能&#xff0c;支持多种协议&#xff08;如GB28181、RTSP、Onvif、RTMP&#xff09;和设备类型&#xff08;IPC、NVR等&#xff09;&#xff0c;提供视频直播、录像、回放…

ETAS工具导入DBC生成Com协议栈

文章目录 前言DBC配置关键属性Cobra参数配置Cobra使用isolar工程配置总结前言 ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项 DBC配置关键属性 对于普通Com报文,配置为周期发送,及其周期,NmMessage配置为No,示例如下: 对…

图形化界面MySQL(MySQL)(超级详细)

1.官网地址 MySQL :: Download MySQL Workbench 1.1在Linux直接点击NO thanks..... 下载完后是这个页面 1.2任何远端登录&#xff0c;再把jj数据库给授权 1.3建立新用户 进行连接 点击这个就运行了 只执行show tables&#xff1b;要先选中 圆圈处支持自己输入 点击这个就执…