查看一些开源代码经常被一些函数的调用关系给绕进去。找个工具生成个调用关系图或简单的文档对于帮助阅读程序有很大的帮助。

1 doxgen+graphviz+htmlhelp简介

1.1 doxgen+graphviz+htmlhelp简介

doxygen生成漂亮的调用关系图,那就必须安装下图形生成工具graphviz软件,要通过html生成chm文档,那就要用htmlhelp软件了,doxygen生成html文档或其他格式的文档软件。

首先下载三个软件,均下载windows下的安装包,

doxygen、Graphviz 、htmlhelp地址如下:

1.2 目前Doxgen可处理的语言

目前Doxygen可处理的程序语言包含:

C/C++

Java

IDL (Corba, Microsoft及KDE-DCOP类型)

而可产生出来的文档格式有:

HTML

XML

LaTeX

RTF

Unix Man Page

而其中还可衍生出不少其它格式。HTML可以打包成CHM格式,而LaTeX可以透过一些工具产生出PS或是PDF文档。

2 关于文档注释的要求

2.1 文档注释的类型

并非所有的批注都会被Doxgen所处理,必须依照正确的格式撰写批注。

原则上,Doxgen仅处理与程序结构相关的批注,如Function,Class,档案的批注等。

对于Function内部的批注则不做处理。Doxgen可处理下面几种类型的批注。

(1)JavaDoc类型:

/**

* ... 批注 ...

*/

(2)Qt类型:

/*!

* ... 批注 ...

*/

(3)单行型式的批注:

/// ... 批注 ...

//! ... 批注 ...

我的推荐:多行用JavaDoc,单行用/// ... 批注 ...

2.2 文档注释的位置

Doxgen对于批注视为在解释后面的程序代码。也就是说,任何一个批注都是在说明其后的程序代码。

对于批注前面的程序码,Doxgen只能识别class的member或者Function的参数上。需要下面格式的批注符号。

/*!

/**

//!

///

2.3 注释指令和格式

使用Doxgen产生说明文档时候,Doxgen会帮助您parsing您的程式码。并且依据程序结构建立对应的文件。然后将您的批注依据其位置套入正确的地方。除了文字以外,还有一些其它特别的指定,如@param,@return等。通过这些指令可以告诉Doxgen后面的批注是在说明什么东西。Doxgen通过指定,能帮助我们做些特别的处理或者排版,甚至是制作参考连结。

(1)常用指令

@file

档案的批注说明。

@author

作者的信息

@brief

用于class 或function的批注中,后面为class 或function的简易说明。

@param

格式为

@param arg_name 参数说明

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

@return

后面接函数传回值的说明。用于function的批注中。说明该函数的传回值。

@retval

格式为

@retval value 传回值说明

主要用于函式说明中,说明特定传回值的意义。所以后面要先接一个传回值。然后在放该传回值的说明。

Doxygen 所支持的指令很多,有些甚至是关于输出排版的控制。您可从Doxygen的使用说明中找到详尽的说明。

(2)我们先说明在Doxygen 中对于类别或是函数批注的一个特定格

式。

/**

* class或function的简易说明...

*

* class或function的详细说明...

* ...

*/

在Doxygen 处理一个class 或是function注

解时,会先判断第一行为简易说明。这个简易说明将一直到空一行的

出现。或是遇到第一个"." 为止。之后的批注将会被视为详细说明。

两者的差异在于Doxygen 在某些地方只会显示简易说明,而不显示详

细说明。如:class 或function的列表。

另一种比较清楚的方式是:

指定@brief的指令。这将会明确的告诉

Doxygen,何者是简易说明。例如:

/**

* @brief class或function的简易说明...

*

* class或function的详细说明...

* ...

*/

(3)除了这个class及Function外,Doxgen也可针对文件做说明,条件是该批注需要置于文件的前面。主要也是利用一些指令,通常这部分注解都会放在档案的开始地方。如:

/*! @file myfile.h

@brief 文件简易说明

详细说明.

@author 作者信息

*/

(4)举例

下面我们准备一组example.h及example.cpp 来说明Doxygen 批注的使用方式:

example.h:

/**

* @file 本范例的include档案。

*

* 这个档案只定义example这个class。

*

* @author garylee@localhost

*/

#define EXAMPLE_OK  0   ///

/**

* @brief Example class的简易说明

*

* 本范例说明Example class。

* 这是一个极为简单的范例。

*

*/

class Example {

private:

int var1 ; ///

public:

int var2 ; ///

int var3 ; ///

void ExFunc1(void);

int ExFunc2(int a, char b);

char *ExFunc3(char *c) ;

};

example.cpp:

/**

* @file 本范例的程序代码档案。

*

* 这个档案用来定义example这个class的

* member function。

*

* @author garylee@localhost

*/

/**

* @brief ExFunc1的简易说明

*

* ExFunc1没有任何参数及传回值。

*/

void Example::ExFunc1(void)

{

// empty funcion.

}

/**

* @brief ExFunc2的简易说明

*

* ExFunc3()传回两个参数相加的值。

*

* @param a 用来相加的参数。

* @param b 用来相加的参数。

* @return 传回两个参数相加的结果。

*/

int ExFunc2(int a, char b)

{

return (a+b);

}

/**

* @brief ExFunc3的简易说明

*

* ExFunc3()只传回参数输入的指标。

*

* @param c 传进的字符指针。

* @retval NULL 空字符串。

* @retval !NULL 非空字符串。

*/

char * ExFunc2(char * c)

{

return c;

}

3 配置步骤

下面就讲解下如何使用了

运行doxygen的步骤和基本界面如下图,

(1)Destination Directory可以用相对路径,如:运行路径是C:/Users/263/Desktop,那么上面的路径直接填写doc/doc

(2)Graphviz生成函数调用图源文件和工作目录必须是英文。

这种选择,在html中没有搜索。搜索功能在CHM中区产生。

要生成HTML有搜索功能的文档,需要再html选项中选择plain html。

说明:编码格式,UTF-8是首选。如果需要显示中文则选择GB2312.

TAB_SIZE 主要是帮助文件中代码的缩进尺寸,譬如@code和@endcode段中代码的排版,建议设置成4。

OPTIMIZE_OUTPUT_FOR_C 这个选项选择后,生成文档的一些描述性名称会发生变化,主要是符合C习惯。如果

是纯C代码,建议选择。

SUBGROUPING这个选项选择后,输出将会按类型分组。

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,CHM_FILE文件名需要加上后缀(xx.chm)。

2,如果在 Wizard的Output Topics中选择了prepare for compressed HTML (.chm)选项,此处就会要求选择hhc.exe程序的位置。在windows help workshop安装目录下可以找到hhc.exe,如:C:\Program Files\HTML Help Workshop。

3,为了解决DoxyGen生成的CHM文件的左边树目录的中文变成了乱码,CHM_INDEX_ENCODING中输入GB2312即可。

4,GENERATE_CHI表示索引文件是否单独输出,建议关闭。否则每次生成两个文件,比较麻烦。

5,TOC_EXPAND表示是否在索引中列举成员名称以及分组(譬如函数,枚举)名称。

参考

Html help安装步骤,Doxgen+Graphiz+htmlhelp配置相关推荐

  1. java(JDK)环境安装步骤以及环境变量配置

    JDK安装以及环境变量配置 1,下载jdk1-8版本 2,双击进行安装,只需选择安装路劲点击下一步下一步即可.注:jdk和jre安装在同一目录. 3.配置环境变量 (1)打开我的电脑属–高级系统设置– ...

  2. javaJDK下载安装步骤及环境变量配置【超详细】

    在学习java的时候需要安装JDK,配置好环境变量才能进行学习,下面是下载和安装JDK步骤和环境变量的配置. 一.JDK下载 1.JDK下载地址: https://www.oracle.com/jav ...

  3. tomcat苹果版安装步骤_Mac系统安装和配置tomcat步骤详解

    一:下载 打开Apache Tomcat官网,选择需要的版本下载: 二:存放到本地 文件夹重名民为ApacheTomcat,放到/Users/计算机名/Library/目录下 三:启动Tomcat 打 ...

  4. Solr安装步骤 + dataimport导入数据配置

    一:安装solr服务器 1.导入安装包到 /usr/local/solr/singleSolr目录下 解压tomat命令:tar -zxvf apache-tomcat-7.0.47.tar.gz 解 ...

  5. Windows下 maven3.0.4的安装步骤+maven配置本地仓库(转载)

    转自:Windows下 maven3.0.4的安装步骤+maven配置本地仓库 简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2 ...

  6. python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项

    新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...

  7. php5中Xdebug配置安装步骤介绍

    摘要: 本文讲的是php5中Xdebug配置安装步骤介绍, Xdebug版本下载 http://www.xdebug.com/download.php 注意在下载Xdebug时我们必须查看自己php版 ...

  8. Git安装步骤+Mac终端配置

    Git安装步骤 其实可以直接略过.因为安装的时候,一路 next 即可. 注意,安装路径中不能出现中文.安装完成后,不得更改安装路径. 检查Git是否安装成功 在任何文件夹,空白处,右键.如果看到 & ...

  9. Windows下 maven3.0.4的安装步骤+maven配置本地仓库

    简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2.下载maven3,最新版本是Maven3.0.4 ,下载地址:http://m ...

最新文章

  1. 深入理解Java:注解(Annotation)--注解处理器
  2. python爬虫的硬件配置_python爬虫之redis环境简单部署
  3. Uploadify3.2中文提示
  4. oracle asm 异机挂载,oracle 异机恢复 从asm到文件系统成功实例
  5. coreldraw x8段落_CorelDRAW X8中文版从入门到精通
  6. Java基础(三)——反射、代理
  7. 如何把一个字符串填充到一个无类型的指针 - 回复 豪杰的爸爸 的问题
  8. 又一百度杰出科学家离职,百度研究院成中国AI的黄埔军校?
  9. position绝对定位后,a中使用display:block 无效的解决办法
  10. Android游戏开发中使用Libgdx引擎遇到的问题及解决办法汇总
  11. 【干货】10个高质量的java自学网站推荐
  12. 项目中的门禁管理者贾维斯———关于 Shiro 框架的 基本使用和基础配置,以及工作流程的生动解释
  13. 建设智能机房--动环监控系统你不能不知道的事
  14. Opencv 轮廓提取
  15. 厦门大学计算机考研2020分数线,厦门大学2020考研分数线已公布
  16. Docker安装与常用命令详解——初步拓荒
  17. ceph rbd mysql_怎样配置ceph rbd存储类型?
  18. 东南亚电商巨头Shopee宣布裁员,互联网大厂还能养老吗?
  19. vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况
  20. 基于图像的三维重建——对极几何(3)

热门文章

  1. (C语言)抓老鼠啊~亏了还是赚了?--pta
  2. C++实验——自幂数(数学黑洞你怕不怕)
  3. 光猫,怕不怕雷电?雷电天气,要不要关光猫?
  4. Android7.1 源码修改之Settings音量调节界面增加通话音量调节
  5. 信号与系统公式笔记(6)
  6. LeetCode 第7题:整数反转(Python3解法)
  7. 无情剑梦断危情java_无情剑梦断危情java版下载-无情剑梦断危情最新版下载v1.1.0 安卓版 - 星光下载...
  8. GND RXD TXD的说明
  9. lwm2m和coap协议 简解读
  10. 年会弹幕文字_微信弹幕_微信墙/弹幕抽奖/晚会年会必备互动