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

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. 普通图片转ascii码字符图

    效果图 基本思路 把图片每个像素点的信息拿出来,最重要的是拿到rgb的值 把每个像素点由rgb转成灰度图像,即0-255 给0-255分级,把每个等级的像素点转换成ascii码,完成 实现 第一步:获 ...

  2. 基于visual Studio2013解决面试题之1102合并字符串

     题目

  3. unity3d游戏开发猜想——当程序猿老去

    程序猿将代码注入生命去打造互联网的浪潮之巅.当有一天他们老了.会走向那里,会做些什么? 4.4.0" alt="" style="border:0px; ver ...

  4. Swift - 判端网络连接状态,连接类型(3G还是Wifi)

    IJReachability是一个使用Swift写的第三方网络检测类.可以测试网络是否连接,并支持3G和Wifi的检测. 使用样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  5. POJ 1258-Agri-Net (Kruskal)

    题目链接:Agri-Net 最小生成树水题,数组开的和题目描写叙述一样,可是就是RE,有填了个0,还好这个题用 库鲁斯卡尔 敲了一遍,发现了点问题,曾经写的库鲁卡尔模板有点问题,多写了步没用的操作,已 ...

  6. Moss、SharePoint数据库迁移问题(转)

    当项目快做完时,大家都要考虑将程序及数据迁移到正式环境部署.但是,如果用SharePoint开发,它会产生很多数据库,到底哪些需要迁移,哪些不需要迁移了?? 请看: 1.配置完成SharePoint后 ...

  7. MSSQL - 逻辑主键、业务主键和复合主键

    转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论 ...

  8. MFC 在对话框显示图片的多种方法(四种方法)

    我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基 ...

  9. 解决php下多人同时操作数据表

    当同一时刻,多人对同一个表进行insert或者update的时候,往往会出现同一条数据出现好多次或者一些奇怪的问题,可以通过mysql的锁表机制来进行排队解决这个问题 php中插入数据之前锁表 // ...

  10. Android 环境变量配置(Mac)

    Mac 系统10.10,自带的就是jdk1.6,因为工作需要就升级到了1.7,要从新配置环境变量了 mac 默认是自带的有jdk1.6 安装路径为: /System/Library/Framework ...