Bootstrap

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 ([email protected])
 * @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后,如下所示

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

;