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

1 doxgen+graphviz+htmlhelp简单介绍

1.1 doxgen+graphviz+htmlhelp简单介绍

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

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

doxygen、Graphviz 、htmlhelp地址例如以下:

http://download.csdn.net/detail/fasfewatgerjhytsjy/8149961

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   ///< 定义EXAMPLE_OK的宏为0。

/**

     * @brief Example class的简易说明

     *

     * 本范例说明Example class。

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

     * 

     */

    class Example {

        private:

            int var1 ; ///< 这是一个private的变数

        public:

            int var2 ; ///< 这是一个public的变数成员。

            int var3 ; ///< 这是还有一个public的变数成员。

            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。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFzZmV3YXRnZXJqaHl0c2p5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

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

假设

是纯C代码,建议选择。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmFzZmV3YXRnZXJqaHl0c2p5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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 表示是否在索引中列举成员名称以及分组(譬如函数,枚举)名称。

參考

http://blog.csdn.net/fly542/article/details/7164633

Doxgen+Graphiz+htmlhelp配置的更多相关文章

  1. Desktop Ubuntu 14.04LTS/16.04科学计算环境配置

    Desktop Ubuntu 14.04LTS/16.04科学计算环境配置 计算机硬件配置 cpu i5 6代 内存容量 8G gpu GTX960 显存容量 2G(建议显存在4G以上,否则一些稍具规 ...

  2. Python2.x安装教程及环境变量配置

    下载Python Python的官网是:http://www.python.org/ ​ ​ 进入官网,也可以找到对应的下载页面:http://www.python.org/download/ ​ 安 ...

  3. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  4. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  5. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  6. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  7. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  8. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

  9. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

随机推荐

  1. python gzip 压缩文件

    压缩数据创建gzip文件 先看一个略麻烦的做法 ? 1 2 3 4 5 6 import StringIO,gzip content = 'Life is short.I use python' zb ...

  2. hdu5336 Walk Out

    hdu5336 Walk Out 题意是:入口:地图的左上角,出口,地图的右上角,求所经过的路径的二进制数最小 照着题解敲了一遍 思路是:首先 二进制 的 位数 越小 越好,其次 二进制的前缀零越多 ...

  3. Oracle管道函数(Pipelined Table Function)介绍

    一 概述: 1.管道函数即是能够返回行集合(能够使嵌套表nested table 或数组 varray)的函数,我们能够像查询物理表一样查询它或者将其  赋值给集合变量. 2.管道函数为并行运行,在普 ...

  4. 公钥password学中的素数以及对称加密

        password学.一向被人们觉得门槛非常高,特别高端...这也是实际,可是这决不意味着普通人无法了解它的精髓.对于喜欢画圆的人来讲,即便是理解了password技术背后的哪怕一点理论,也是激 ...

  5. hdu4722 Good Numbers

    Good Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  7. 解决Ajax.BeginForm还是刷新页面的问题

    在.net mvc中用Ajax.BeginForm来实现异步提交,在Ajax.BeginForm里面还是可以用submit按钮,一般来说 submit按钮是提交整个页面的数据.但是在Ajax.Begi ...

  8. 纯win32实现PNG图片透明窗体

    #include <windows.h> #include <gdiplus.h> /*  GDI+ startup token */ ULONG_PTR gdiplusSta ...

  9. 实现StatusBar的Flat风格

    效果见右图,OfficeXP里就是这样的风格,其实实现很简单,不必专门在网上找别人控件. 把StatusBar的SimplePanel设为False,点击Panels添加StatusPanel,把所有 ...

  10. PDCA模型的学习

    PDCA是广泛应用于质量控制中的一种管理学模型. P即plan,分析和了解当前的状况,然后作出改进的计划: D即do,执行所作出的计划: C即check,对执行的结果进行检查,要确认哪些是对的,哪些是 ...