Doxygen的使用,配置及实例
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 |
@class |
引用某个类, 格式:@class 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>全局和静态变量注释
例如:
/** Description of global variable */
int g_xxx = 0;
static int s_xxx = 0; ///< Description of static variable
使用文档详见: Doxygen使用
Doxygen的使用,配置及实例的更多相关文章
- Winform下CefSharp的引用、配置、实例与报错排除(源码)
Winform下CefSharp的引用.配置.实例与报错排除 本文详细介绍了CefSharp在vs2013..net4.0环境下,创建Winfrom项目.引用CefSharp的方法,演示了winfro ...
- CefSharp的引用、配置、实例
CefSharp的引用.配置.实例与报错排除(源码) Winform下CefSharp的引用.配置.实例与报错排除 本文详细介绍了CefSharp在vs2013..net4.0环境下,创建Winfro ...
- windows下Tomcat配置多实例
详情参见tomcat安装目录下RUNNING.txt中Advanced Configuration - Multiple Tomcat Instances部分. 问题源于下面这段tomcat官方文档的 ...
- JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置
众所周知,在进行接口测试的过程中,需要创建不同的场景(不同条件的输入,来验证不同的入参的返回结果).因而,在日常的自动化接口监控或商品监控等线上监控过程中,需要配置大量的入参来监控接口的返回是否正确. ...
- JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置
前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...
- 【前端】vue.js环境配置以及实例运行简明教程
vue.js环境配置以及实例运行简明教程 声明:本文档编写参考如下两篇博客,是对它们的修改与补充,欢迎点击链接查看原文: 原文1:vue.js在windows本地下搭建环境和创建项目 原文2:Vue. ...
- DotNetCore学习-1.读取Json配置并绑定到配置类实例
DotNetCore的程序的配置不再完全局限于XML文件,增加更加通用的Json配置. 读取Json配置文件的类主要在Microsoft.Extensions.Configuration命名空间下,创 ...
- 安装Nginx+Lua+OpenResty开发环境配置全过程实例
安装Nginx+Lua+OpenResty开发环境配置全过程实例 OpenResty由Nginx核心加很多第三方模块组成,默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用. ...
- api的使用机制:继承、实例化、实现(继承)配置、实例(参数化)配置、机制管理模块
api的使用机制:继承.实例化.实现(继承)配置.实例(参数化)配置.机制管理模块 facade模式.管理模块
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
随机推荐
- myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在
如题,今天在尝试部署从SVN上down下来的项目时,发现不能被tomcat识别成web项目!原因是SVN上down下来的项目的结构并非典型的web项目. 解决办法,右键项目->properti ...
- poj--2299(树状数组+离散化)
一.离散化: https://www.cnblogs.com/2018zxy/p/10104393.html 二.逆序数 AC代码: #include<iostream> #include ...
- 指令发布中如何实现new新消息的提醒?
设计思路:反馈后,最急需了解反馈结果的是申请人,故给每一条反馈信息添加一个查看状态的字段,如CK_STATUS,并为这个状态设计为char(1)类型,java bean中使用integer可以实现默认 ...
- Android 从相机或相册或获取图片(转)
参考: https://github.com/ASDbobo/GetPhotoDemo Android 8.0 调取系统摄像头和相册选择图片 9.3 使用Camera拍照
- CSS Sprites (CSS 精灵) 技术
CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...
- openstack路由管理命令
1.命令一览 [root@cc07 ~]# neutron help | grep route bgp-speaker-advertiseroute-list List routes advertis ...
- C++的重载流输出运算符
// 下列代码输出什么?#include <iostream>#include <string>// typedef basic_ostream<char> ost ...
- Ng第十二课:支持向量机(Support Vector Machines)(一)
1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...
- 用jquery监听输入数字的变化
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- SRM477
250pt: 题意:给定一块蜂巢状的N*M矩阵,每块六边形和周围6个六边形相邻,现在告诉你哪些是陆地,哪些是水,问水陆交界处的长度. 思路:直接模拟 code: #line 7 "Islan ...