[Doxygen].Docygen使用
转自:https://www.cnblogs.com/chenyang920/p/5732643.html
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成文档
下载Doxygen + Graphviz
Doxygen可以生成动态文档
Graphviz可以生成视图连接将.c文件中所用到的函数、头文件生成一个树状结构并且设置之后可以生成相对应的函数的跳转,方便查询函数。
一、Doxygen的使用步骤
1.1Doxygen配置方法
1.1.1>Doxygen的主页面
首先修改Project name,选择扫描源代码的目录,Source code directory:勾选Scan recursively:
1.2>在Wizard的Topics下的Mode,选择All Entities,可以输出相对完整的功能,是否包含源代码看自身情况,在下面选择好自己的语言。这里得是C所以选择C or PHP
1.3>在Output中,如果你需要输出chm格式,勾选chm,没有要求的话html就可以了
1.4>在Diagrams中选择使用GraphViz包,来输出UML,GraphViz包可以帮助建立一些树状视图。
1.5>Expert中,你需要首选确定你所输出的语言,个人使用中文在Expert的Input中,很重要的是INPUT_ENCODING项,如果使用的为微软默认字符集请填写GBK,不然目录乱码,当前选择UTF-8,输出语言选择的是Chinese.
1.6>Build页面,这个页面是生成帮助信息中比较关键的配置页面:
- EXTRACT_ALL 表示:输出所有的函数,但是private和static函数不属于其管制。
- EXTRACT_PRIVATE 表示:输出private函数。
- EXTRACT_STATIC 表示:输出static函数。同时还有几个EXTRACT,相应查看文档即可。
- HIDE_UNDOC_MEMBERS 表示:那些没有使用doxygen格式描述的文档(函数或类等)就不显示了。当然,如果EXTRACT_ALL被启用,那么这个标志其实是被忽略的。
- INTERNAL_DOCS 主要指:是否输出注解中的@internal部分。如果没有被启动,那么注解中所有的@internal部分都将在目标帮助中不可见。
- CASE_SENSE_NAMES 表示:是否关注大小写名称,注意,如果开启了,那么所有的名称都将被小写。对于C/C++这种字母相关的语言来说,建议永远不要开启。
- HIDE_SCOPE_NAMES 表示:域隐藏,建议永远不要开启。
- SHOW_INCLUDE_FILES 表示:是否显示包含文件,如果开启,帮助中会专门生成一个页面,里面包含所有包含文件的列表。
- INLINE_INFO :如果开启,那么在帮助文档中,inline函数前面会有一个inline修饰词来标明。
- SORT_MEMBER_DOCS :如果开启,那么在帮助文档列表显示的时候,函数名称会排序,否则按照解释的顺序显示。
- GENERATE_TODOLIST :是否生成TODOLIST页面,如果开启,那么包含在@todo注解中的内容将会单独生成并显示在一个页面中,其他的GENERATE选项同。
- SHOW_USED_FILES :是否在函数或类等的帮助中,最下面显示函数或类的来源文件。
- SHOW_FILES :是否显示文件列表页面,如果开启,那么帮助中会存在一个一个文件列表索引页面。
1.7>Expert>Input页按照下图进行设置调整参数。
1.8>
1.如果在 Wizard 的 Output Topics 中选择了 prepare for compressed HTML (.chm)选项,此处就会要求选择 hhc.exe 程序的位置。在 windows help workshop 安装目录下可以找到 hhc.exe。
2.为了解决Doxygen生成的CHM文件的左边树目录的中文变成了乱码,CHM_INDEX_ENCODING中输入GB2312即可。
3.GENERATE_CHI 表示索引文件是否单独输出,建议关闭。否则每次生成两个文件,比较麻烦。
4.TOC_EXPAND 表示是否在索引中列举成员名称以及分组(譬如函数,枚举)名称。
1.8>运行doxygen
1.9>运行结束
二.注释规范
2.1> Doxygen注释种类
Doxygen注释的种类有多种
1.
/** * ....描述... */
2.

/*! * ....描述... */ 或者 /*! ....描述... */

注:注释块中的星号(*)是可选的,可写可不写。
3

/// ///....描述... /// 或者 //! //!....描述... //!

4
//////////////////////// ///....描述... //////////////////////////
2.2>Doxygen支持的指令
可以在注释中加一些Doxygen支持的指令,主要作用是控制输出文档的排版格式,使用这些指令时需要在前面加上“\”或者“@”(JavaDoc风格)符号,告诉Doxygen这些是一些特殊的指令,通过加入这些指令以及配备相应的文字,可以生成更加丰富的文档,下面对比较常用的指令做一下简单介绍。
@file |
档案的批注说明。 |
@author |
作者的信息 |
@brief |
用于class或function的简易说明 eg:@brief本函数负责打印错误信息串 |
@param |
主要用于函数说明中,后面接参数的名字,然后再接关于该参数的说明 |
@return |
描述该函数的返回值情况 eg: @return 本函数返回执行结果,若成功则返回TRUE,否则返回FLASE |
@retval |
描述返回值类型 eg:@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.3>文件注释
放于文件的开头,例如:

/** * @file filename * @brief This is a brief description. * @details This is the detail description. * @author author * @date date * @version A001 * @par Copyright (c): * XXX公司 * @par History: * version: author, date, desc\n */

2.3>函数注释
放于函数声明前,例如:

/** 下面是一个含有两个参数的函数的注释说明(简述) * * 这里写该函数的详述信息 * @param a 被测试的变量(param描述参数) * @param s 指向描述测试信息的字符串 * @return 测试结果 (return描述返回值) * @see Test() (本函数参考其它的相关的函数,这里作一个链接) * @note (note描述需要注意的问题) */
int testMe(int a,const char *s);

2.4>数据结构注释
应放于函数声明前,例如:

/** * The brief description. * The detail description. */ typedef struct { int var1;///<Description of the member variable }XXXX; 或者 typedef struct box { 成员变量注释(enum的各个值也如此注释): double length; ///< The length of the box double width; ///< The width of the box double height; ///< The height of the box };

2.5>宏定义注释
放于宏定义上方或者右侧,例如:

/** Description of the macro */ #define XXXX_XXX_XX ox7fffffff 或者 #define XXXX_XXX_XX 0 ///< Description of the macro.

2.6>全局和静态变量注释
例如:
1
2
3
|
/** Description of global variable */ int g_xxx = 0; static int s_xxx = 0; ///< Description of static variable |
使用文档详见: Doxygen使用
[Doxygen].Docygen使用的更多相关文章
- 在QtCreator中使用doxygen
接触Doxygen后,认识到其强大之处,一口气将之前的烂代码重构了一遍,所有的文件头,函数注释等等都是手动添加注释.在keil中可以看到其对JavaDoc风格的注释有高亮,非常好看.但是keil这个I ...
- Windows下使用doxygen阅读和分析C/C++代码
Windows下使用doxygen阅读和分析C/C++代码 转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html 虽然使用各种IDE或者Sou ...
- (转)Doxygen文档生成工具
http://blog.csdn.net/lostaway/article/details/6446786 Doxygen 是一个支持 C/C++,以及其它多种语言的跨平台文档生成工具.如同 Java ...
- ubuntu使用doxygen
1.安装 sudo apt-get install doxygen按tab键 doxygen doxygen-dbg doxygen-doc doxygen-gui d ...
- 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码
在一个应用的整个开发过程中涉及到了无数的步骤.其中一些是应用的说明,图片的创作,应用的实现,和实现过后的测试阶段.写代码可能组成了这个过程的绝大部分,因为正是它给了应用生命,但是这样还不够,与它同等重 ...
- Win7下Doxygen配置与使用
1. 下载与安装 1.1 下载 Doxygen官方安装程序及其手册下载地址,目前使用版本为1.8.8. 安装程序:http://www.stack.nl/~dimitri/doxygen/downl ...
- Bullet的学习资源(用Doxygen生成API文档)
Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...
- [Doxygen]Doxygen
1. Doxygen做什么? 首先这是一个文档生成工具,而不是代码中的注释生成工具.其次,如何生成对应文档,那就是按照一个配置文件中给出的配置格式来书写注释的时候,通过工具就可以解析代码注释最终生成文 ...
- Doxygen给C程序生成注释文档
近段时间,一直在学习华为C语言编程规范(2011版),在“注释”这一章中发现了一种“Doxygen”的注释转文档工具,查看诸多相关资料,并进行编程实践,终于可以利用Doxygen给C程序生成注释文档. ...
随机推荐
- shell脚本监控k8s集群job状态,若出现error通过触发阿里云的进程监控报警
#!/bin/bash while [ 1 ] do job_error_no=`kubectl get pod -n weifeng |grep -i "job"|grep -c ...
- ORM基础知识
ORM基础知识 一.什么ORM? ORM是Object Relactional Mapping的缩写,即对象关系映射,是将关系型数据库中的数据库结构映射成对象,就可以通过面向对象思想编程. 二.常用的 ...
- MongoDB里做表间关联
MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型.MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).那么何时Embed何时Li ...
- Java并发编程基础-Unsafe
前言:Unsafe是Java中一个底层类,包含了很多基础的操作,比如数组操作.对象操作.内存操作.CAS操作.线程(park)操作.栅栏(Fence)操作,JUC包.一些三方框架都使用Unsafe类来 ...
- 前端编程的核心问题是数据与UI的绑定
1.静态页面---静态绑定 2.js dom强修改--js重置绑定: 3.chymeleaf--预处理html+特殊语言绑定: 4.react--组建化UI.js与其他语言形式绑定
- - XML 解析 总结 DOM SAX PULL MD
目录 目录 XML 解析 总结 DOM SAX PULL MD 几种解析方式简介 要解析的内容 DOM 解析 代码 输出 SAX 解析 代码 输出 JDOM 解析 代码 输出 DOM4J 解析 代码 ...
- lightGBM gpu环境配置
推荐先看一手官方的Installation Guide.我用的是ubuntu 16.04,一些要求如下图: 主要是OpenCL以及libboost两个环境的要求. (1) OpenCL的安装.我这里之 ...
- VS2019+EF6连接Mysql
开发环境:Win10 + VS2019Mysql服务器版本:8.0.16 一.下载并安装插件(必备) MySQL-Connector-net-6.9.12 链接https://cdn.mysql.c ...
- c++关于IOCP(完成端口)的服务器开发
本文转载,以便更好的学习C++的服务器开发 1.对IOCP的理解,转载地址 2.在C++中对IOCP的实现,转载地址 注:其实在.net中 ,Socket的服务器开发中,SocketAsyncEven ...
- 笔记:Java Language Specification - 章节17- 线程和锁
回答一个问题:多线程场景下,有时一个线程对shared variable的修改可能对另一个线程不可见.那么,何时一个线程对内存的修改才会对另一个线程可见呢? 基本的原则: 如果 读线程 和 写线程 不 ...