www.doxygen.org 的使用非常方便,下面分成2步介绍一下

1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的

C++的注释风格 主要使用下面这种样式:即在注释块开始使用三个反斜杠‘/’

文件注释

/**

*@file 文件名

*@brief 概述

*

*详细概述

*

*@author 作者,包含email等

*@version 版本号(maj.min,主版本.分版本格式)

*@date 日期

*/

命名空间的注释

///@brief 简单概述

///

///详细概述

类定义注释

对需要的类增加注释,需要 说明类的设计方法,类的使用指南,说明类的不变项

///@brief 简要概述

///

///详细说明

///

///使用指南设计函数调用可以@ref 函数名 用于引用其他的说明

///

///其他说明,重写父类函数加以特殊实现

///

///@invariant 类不变项,例如哪些值不会超多少多少

///

class xxx

{…

数据声明注释

行尾说明

Type varName;///< 说明

多行说明

///说明

///

///

Type varName;

函数注释规范

///@brief 简单概述

///

///详细说明

///@param[in|out] 参数名,in,out表示输入还是输出

///@pre 前者条件

///@return 说明

///@retval 返回值 说明, 这个是可选的

///@post 说明函数完成后的世界状态

代码标记数值规范

///@todo 将要做的代码

///@bug 表示此处的bug描述

枚举变量的注释示例 

///    颜色的枚举定义

///

///    该枚举定义了系统中需要用到的颜色\n

///    可以使用该枚举作为系统中颜色的标识

enum TEnum

{

RED,            ///< 枚举,标识红色

BLUE,           ///< 枚举,标志蓝色

YELLOW          ///< 枚举,标志黄色.

}enumVar;

附:Doxygen支持的指令

概述

可以在注释中加一些Doxygen支持的指令,主要作用是控制输出文档的排版格式,使用这些指令时需要在前面加上“\”或者“@”(JavaDoc风格)符号,告诉Doxygen这些是一些特殊的指令,通过加入这些指 令以及配备相应的文字,可以生成更加丰富的文档,下面对比较常用的指令做一下简单介绍。

常用指令介绍

@file

档案 的批注说明。

@author

作者 的信息

@brief

用于class 或function的简易说明

eg:

@brief 本函数负责打印错 误信息串

@param

主要 用于函数说明中,后面接参数的名字,然后再接关于该参数的说明

@return

描述 该函数的返回值情况

eg:

@return 本函数返回执 行结果,若成功则返回TRUE,否则返回FLASE

@retval

描述 返回值类型

eg:

@retval NULL 空字 符串。

@retval !NULL 非 空字符串。

@note

注解

@attention

注意

@warning

警告 信息

@enum

引用了某个枚举,Doxygen会在该枚举处产生一个链接

eg:

@enum CTest::MyEnum

@var

引用了某个变量,Doxygen会在该枚举处产生一个链接

eg:

@var CTest::m_FileKey

@class

引用 某个类,

格式:@class <name> [<header-file>] [<header-name>]

eg:

@class CTest "inc/class.h"

@exception

可能 产生的异常描述

eg:

@exception 本函数 执行可能会产生超出范围的异常

==================

2  linux下使用doxygen

我的开发环境是ubuntu, 默认有doxygen 命令,如果没有可以从官网下载一个编译安装之

doxygen工具的使用简单的2步就够了:

2.1 生成默认配置文档

doxygen -s -g yourconfigname

这一条命令就可以生成一个叫 “yourconfigname” 的配置文档

接下来需要打开这个文档,对其中某些字段做配置,一般来说,只需要配置其中十几个字段就可以:

# 项目名称,将作为于所生成的程序文档首页标题

PROJECT_NAME            = “Test“

# 文档版本号,可对应于项目版本号,譬如 svn 、 cvs 所生成的项目版本号

PROJECT_NUMBER        = "1.0.0”

# 程序文档输出目录

OUTPUT_DIRECTORY     =  doc/

# 程序文档语言环境

OUTPUT_LANGUAGE     = Chinese

# 如果是制作 C 程序文档,该选项必须设为 YES ,否则默认生成 C++ 文档格式

OPTIMIZE_OUTPUT_FOR_C   = YES

# 对于使用 typedef 定义的结构体、枚举、联合等数据类型,只按照 typedef 定义的类型名进行文档化

TYPEDEF_HIDES_STRUCT    = YES

# 在 C++ 程序文档中,该值可以设置为 NO ,而在 C 程序文档中,由于 C 语言没有所谓的域 / 名字空间这样的概念,所以此处设置为 YES

HIDE_SCOPE_NAMES        = YES

# 让 doxygen 静悄悄地为你生成文档,只有出现警告或错误时,才在终端输出提示信息

QUIET   = YES

# 只对头文件中的文档化信息生成程序文档

FILE_PATTERNS          = *.h

# 递归遍历当前目录的子目录,寻找被文档化的程序源文件

RECURSIVE               = YES

# 示例程序目录

EXAMPLE_PATH           = example/

# 示例程序的头文档 (.h 文件 ) 与实现文档 (.c 文件 ) 都作为程序文档化对象

EXAMPLE_PATTERNS       = *.c  *.h

# 递归遍历示例程序目录的子目录,寻找被文档化的程序源文件

EXAMPLE_RECURSIVE      = YES

# 允许程序文档中显示本文档化的函数相互调用关系 
REFERENCED_BY_RELATION = YES

REFERENCES_RELATION    = YES

REFERENCES_LINK_SOURCE = YES

# 不生成 latex 格式的程序文档

GENERATE_LATEX         = NO

# 在程序文档中允许以图例形式显示函数调用关系,前提是你已经安装了 graphviz 软件包

HAVE_DOT               = YES

CALL_GRAPH            = YES

CALLER_GRAPH        = YES

# 让 doxygen 从配置文件所在的文件夹开始,递归地搜索所有的子目录及源文件

RECURSIVE = YES 

# 在最后生成的文档中,把所有的源代码包含在其中

SOURCE BROWSER = YES

$ 这会在 HTML 文档中,添加一个侧边栏,并以树状结构显示包、类、接口等的关系

GENERATE TREEVIEW = ALL

2.2 执行命令

doxygen yourconfigname

这一条命令就可以在指定的目录下生成 html 目录(根据配置决定,也可以生成帮助文档等)

2.3 用apache等存放刚刚生成的html目录

比如我的机器安装了apache,则可以在 /var/run/www 目录下建一个软连接

连接到刚刚生成好的 html 目录,然后就可以从浏览器访问文档了,下面是我的项目的文档界面

下面这个是win上面使用的例子:http://wildpointer.net/2012/04/14/doxygen_graphviz/

其他参考:

http://blog.csdn.net/blood008/article/details/6567169

linux c/c++ 代码使用 doxygen 自动生成文档的更多相关文章

  1. 用doxygen自动生成文档

    1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...

  2. 使用doctest代码测试和Sphinx自动生成文档

    python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...

  3. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能

    产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...

  4. MVC WEB api 自动生成文档

    最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...

  5. 使用swagger在netcorewebapi项目中自动生成文档

    一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...

  6. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  7. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  8. 【Sphinx】 为Python自动生成文档

    sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...

  9. 使用Sphinx为你的python模块自动生成文档

    Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等. 安装 创建一个sphinx项目 下面的命令会 ...

随机推荐

  1. android gradle.properties

    gradle.properties 里面配置的东西,在gradle 文件里面可以直接引用. 例如: 在你工程根目录的gradle.properties 文件里面 可以这样配置: ## Project- ...

  2. ARabevaluator 颜色渐变控制类

    参考资料: http://blog.csdn.net/qq_33456552/article/details/52092865 实现渐变效果: ArgbEvaluator argbEvaluator; ...

  3. MySQL之查询性能优化(一)

    为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段, ...

  4. Java 多线程并发编程一览笔录

    Java 多线程并发编程一览笔录 知识体系图: 1.线程是什么? 线程是进程中独立运行的子任务. 2.创建线程的方式 方式一:将类声明为 Thread 的子类.该子类应重写 Thread 类的 run ...

  5. Python 3基础教程9-函数

    本文介绍Python中的函数,主要了解如何定义一个函数,如何调用一个函数. 如果上面你不写调用函数这行代码,你运行后,是没有打印输出的.我们这里来,结合前面的if语句来定义一个,两个数比较,判断最大的 ...

  6. finally在return之后还是之前运行

    finally在运行前打印出来是return的数据,finally是最后修改的数据,如果finally存在对返回值的修改,则以finally修改的值为准. 综上所述,finally最后运行.

  7. 文件i/o函数 open/close

    一:open open函数可以打开或创建一个文件. #include <sys/types.h> #include <sys/stat.h> #include <fcnt ...

  8. poj 3080 kmp求解多个字符串的最长公共字串,(数据小,有点小暴力 16ms)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14113   Accepted: 6260 Descr ...

  9. BZOJ2756 [SCOI2012]奇怪的游戏 【网络流 + 二分】

    题目 Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知 ...

  10. 雅礼集训 Day1 T1 养花

    养花 题目描述 小\(C\)在家种了\(n\)盆花,每盆花有一个艳丽度\(a_i\). 在接下来的\(m\)天中,每天早晨他会从一段编号连续的花中选择一盆摆放在客厅, 并在晚上放回. 同时每天有特定的 ...