zoukankan      html  css  js  c++  java
  • Doxgen+Graphiz+htmlhelp配置

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

    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.1 文档凝视的类型

    并不是全部的批注都会被Doxgen所处理。必须按照正确的格式撰写批注。

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

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

    1JavaDoc型:

    /**
     * ... 批注 ...
     */

    2Qt型:

    /*!
     * ... 批注 ...
     */

    3单行型式的批注:

    /// ... 批注 ...

    或    

    //! ... 批注 ...

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

    2.2 文档凝视的位置

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

    对于批注前面的程序码,Doxgen仅仅能识别classmember或者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;
        }  

    配置步骤

    以下就解说下怎样使用了

    执行doxygen的步骤和基本界面例如以下图。


    1Destination Directory能够用相对路径,如:执行路径是C:/Users/263/Desktop,那么上面的路径直接填写doc/doc

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



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

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



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

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

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

    假设

    是纯C代码,建议选择。

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



    Build页面,这个页面是生成帮助信息中比較关键的配置页面:

    EXTRACT_ALL 表示:输出全部的函数,可是privatestatic函数不属于其管制。

    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 :是否显示文件列表页面。假设开启。那么帮助中会存在一个一个文件列表索引页面。







    说明:1CHM_FILE文件名称须要加上后缀(xx.chm)。

    2假设在 Wizard 的 Output Topics 中选择了 prepare for compressed HTML (.chm)选项。此处就会要求选择 hhc.exe 程序的位置。

    在 windows help workshop 安装文件夹下能够找到 hhc.exe,如:C:Program FilesHTML Help Workshop

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

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

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




     參考

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









  • 相关阅读:
    2017-2018-2 20179205 《网络攻防》第十三周作业 国密算法实现
    2017-2018-2 20179205 《网络攻防技术与实践》第十二周作业 免杀技术
    2017-2018-2 20179205《网络攻防技术与实践》第十一周作业 SQL注入攻击与实践
    2017-2018-2 20179205《网络攻防技术与实践》第十周作业 缓冲区溢出攻防研究
    2017-2018-2 20179205《网络攻防技术与实践》第九周作业
    2017-2018-2 20179205 《网络攻防技术与实践》第八周作业
    2017-2018-2 20179205 《网络攻防技术与实践》第七周作业
    2017-2018-2 20179205《网络攻防技术与实践》Windows攻击实验
    2017-2018-2 20179205 《网络攻防技术与实践》第六周作业
    2017-2018-2 20179205 《网络攻防技术与实践》第五周作业
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5100037.html
Copyright © 2011-2022 走看看