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

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. github上的QT源码,必要的时候还是应该看一下,仅凭猜测很容易出错

    QCoreApplication::processEvents 他处理的时候拿的是current不是qAppqApp的话,才是和主线程密切相关的 一直觉得QT源码复杂,有点怕,所以没怎么看 我也看不懂 ...

  2. Android开发之大位图二次採样压缩处理(源码分享)

    图片有各种形状和大小.在很多情况下这些图片是远远大于我们的用户界面(UI)且占领着极大的内存空间,假设我们不正确位图进行压缩处理,我们的程序会发生内存泄露的错误. MainActivity的代码 pa ...

  3. 【解决方法】System.IO.FileNotFoundException

    错误日志 See the end of this message for details on invoking just-in-time (JIT) debugging instead of thi ...

  4. URAL 1180. Stone Game (博弈 + 规律)

    1180. Stone Game Time limit: 1.0 second Memory limit: 64 MB Two Nikifors play a funny game. There is ...

  5. overflow:hidden与position:absolute

    在做一个下拉框的动画效果中遇到了这个bug,记录一下. 在写下拉框的动画的时候,一般我们的做法都是把下拉框的外盒子设为overflow:hidden,然后设下外层盒子高度,之后通过js慢慢的改变高度从 ...

  6. perl eval函数

    29.2.32 eval • eval BLOCK • eval EXPR • eval eval 关键字在Perl 里起两种不同的但相关的作用.这些目的是用两种形式的语法 来表现的, eval BL ...

  7. 正则表达式概述与JAVA中正则表达式的应用

    编程或者电脑使用过程中,经常需要对字符串进行 匹配,查找,替换,判断.如果单纯用代码 if () ,whlie 什么的进行比较复杂麻烦.正则表达式是一种强大灵活的文本处理工具,专门对字符串进行匹配,查 ...

  8. 10个优秀的 HTML5 &amp; CSS3 下拉菜单制作教程

    下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...

  9. Ubuntu 环境安装整理

    Ubuntu11.04下Java开发环境搭建和配置 转自:http://guoyunsky.iteye.com/blog/1175861 类似的搭建,网上一搜一大把,但每次去搜索比较麻烦.我这里就整理 ...

  10. 逻辑与(&&、&)和逻辑或(||、|)

    这四个逻辑运算符,大家都知道,但是有时候会凌乱,这里用程序来解释一下,以免忘了.(根据大家反应说:这文章没有解释清楚它们的区别.用法,其实文章主要说的是,如果将这四个运算符用于条件判断,那么它们会是什 ...