`

简介Doxygen

 
阅读更多

 

一.什么是Doxygen?

      Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的批注,与打捞铁达尼号同样的辛苦。大部分有用的批注都是属于针对函式,类别等等的说明。所以,如果能依据程序本身的结构,将批注经过处理重新整理成为一个纯粹的参考手册,对于后面利用您的程序代码的人而言将会减少许多的负担。不过,反过来说,整理文件的工作对于您来说,就是沉重的负担。

Doxygen 就是在您写批注时,稍微按照一些它所制订的规则。接着,他就可以帮您产生出漂亮的文档了。

 

因此,Doxygen 的使用可分为两大部分。首先是特定格式的批注撰写,第二便是利用Doxygen的工具来产生文档。

 

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

C/C++

Java

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

 

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

HTML

XML

LaTeX

RTF

Unix Man Page

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

 

二.安装Doxygen

1.1 安装 Doxygen 1.8.2(Windows) http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.2-setup.exe

1.2 安装 graphviz 2.28.0(Windows)     http://www.graphviz.org/Download.php

    graphviz 是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。Doxygen 使用 graphviz 自动生成类之间和文件之间的调用关系图,如不需要此功能可不安装该工具包。

1.3 安装 html help workshop 1.32

    Doxygen 使用这个工具可以生成 CHM 格式的文档。

 

三.Doxygen的配置

    Doxygen 产生文档可以分为三个步骤。一是在程序代码中加上符合Doxygen所定义批注格式。二是使用Doxywizard进行配置。三是使用Doxygen来产生批注文档。

    Doxygen 1.7.4 主界面如下图 1 所示。


 

 

说明:1,Doxygen 工作目录,就是用来存放配置文件的目录。

           2,递归搜索源文件目录需要选上。

选择 wizard 标签下的 Output Topics

相关配置说明如下图 2 所示。

 


 

 

选择 wizard 标签下的 Diagrams Topics

相关配置说明如下图 3 所示。

 


 

 

说明:如果选择这个选项之前需要先安装了 Graphviz 工具包。

选择 expert 标签下的 Project Topics

相关配置说明如下图 4 所示。 

 


 

 

 

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

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

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

是纯C代码,建议选择。

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

 

选择 expert 标签下的 Build



 

 

 

 

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

选择 expert 标签下的 Input Topics

相关配置说明如下图 5 所示。


 

 

说明:输入的源文件的编码,要与源文件的编码格式相同。如果源文件不是UTF-8编码最好转一下。

选择 expert 标签下的 HTML Topics

相关配置说明如下图 6 所示。



 

 

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

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

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

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

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

 

选择 Run 标签

相关配置说明如下图 7 所示。


 

点击 Run doxygen 按钮, Doxygen 就会从源代码中抓取符合规范的注释生成你定制的格式的文档。

 

四.撰写正确格式的批注

并非所有程序代码中的批注都会被Doxygen 所处理。您必需依照正确的格式撰写。原则上,Doxygen 仅处理与程序结构相关的批注,如Function,Class ,档案的批注等。对于Function内部的批注则不做处理。Doxygen可处理下面几种类型的批注。

 

JavaDoc类型:

 

/**

 * ... 批注 ...

 */

 

 

Qt类型:

 

/*!

 * ... 批注 ...

 */

 

     

单行型式的批注:

 

/// ... 批注 ...

 

或   

 

//! ... 批注 ...

  

要使用哪种型态完全看自己的喜好。以笔者自己来说,大范围的注解我会使用JavaDoc 型的。单行的批注则使用"///" 的类型。

 

此外,由于Doxygen 对于批注是视为在解释后面的程序代码。也就是说,任何一个批注都是在说明其后的程序代码。如果要批注前面的程式码则需用下面格式的批注符号。

 

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

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

//!< ... 批注 ...

///< ... 批注 ...

 

    

上面这个方式并不适用于任何地方,只能用在class 的member或是function的参数上。

举例来说,若我们有下面这样的class。

 

    class MyClass {

        public:

            int member1 ;

            int member2:

            void member_function();

    };

    

加上批注后,就变成这样:

 

    /**

     * 我的自订类别说明 ...

     */

    class MyClass {

        public:

            int member1 ; ///< 第一个member说明 ...

            int member2:  ///< 第二个member说明 ...

            int member_function(int a, int b);

    };

    

    /**

     * 自订类别的member_funtion说明 ...

     *

     * @param a 参数a的说明

     * @param b 参数b的说明

     *

     * @return 传回a+b。

     */ 

    int MyClass::member_function( int a, int b ) 

    {

        return a+b ;

    }

    

当您使用Doxygen 产生说明文档时,Doxygen 会帮您parsing 您的程式码。并且依据程序结构建立对应的文件。然后再将您的批注,依据其位置套入于正确的地方。您可能已经注意到,除了一般文字说明外,还有一些其它特别的指令,像是@param及@return 等。这正是Doxygen 另外一个重要的部分,因为一个类别或是函式其实都有固定几个要说明的部分。为了让Doxygen 能够判断,所有我们就必需使用这些指令,来告诉Doxygen 后面的批注是在说明什么东西。Doxygen 在处理时,就会帮您把这些部分做特别的处理或是排版。甚至是制作参考连结。

 

首先,我们先说明在Doxygen 中对于类别或是函数批注的一个特定格式。

 

    /**

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

     *

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

     * ...

     */

     

上面这个例子要说的是,在Doxygen 处理一个class 或是function注解时,会先判断第一行为简易说明。这个简易说明将一直到空一行的出现。或是遇到第一个"." 为止。之后的批注将会被视为详细说明。两者的差异在于Doxygen 在某些地方只会显示简易说明,而不显示详细说明。如:class 或function的列表。

另一种比较清楚的方式是指定@brief的指令。这将会明确的告诉Doxygen,何者是简易说明。例如:

 

    /**

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

     *

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

     * ...

     */

 

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

 

    /*! \file myfile.h

        \brief 档案简易说明

    

        详细说明.

        

        \author 作者信息

    */

 

如您所见,档案批注约略格式如上,请别被"\" 所搞混。其实,"\" 与"@" 都是一样的,都是告诉Doxygen 后面是一个指令。两种在Doxygen 都可使用。笔者自己比较偏好使用"@"。

接着我们来针对一些常用的指令做说明:

 

@file 

 

档案的批注说明。

 

@author 

 

作者的信息

 

@brief 

 

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

 

@param 

 

格式为

 

@param arg_name 参数说明

 

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

 

@return 

 

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

 

@retval 

 

格式为

 

@retval value 传回值说明

 

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

 

       

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

下面我们准备一组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;

    }

 

 

 

  • 大小: 108.4 KB
  • 大小: 82 KB
  • 大小: 82.2 KB
  • 大小: 136.5 KB
  • 大小: 134.1 KB
  • 大小: 133.2 KB
  • 大小: 164.4 KB
  • 大小: 81 KB
分享到:
评论

相关推荐

    Doxygen使用简介

    Doxygen 使用简介 Doxygen 是一种功能强大且广泛使用的文档生成工具,可以根据代码中的注释自动生成文档,包括 HTML、PDF、CHM 等多种格式的文档。 Doxygen 的主要特点是可以根据代码中的注释自动生成文档,无需...

    doxygen配置及使用手册

    #### 一、Doxygen简介 Doxygen是一款强大的文档自动生成工具,能够从C、C++、Java等编程语言的源代码中提取文档信息,自动生成帮助文档、API资料等。这使得开发人员能够在编写代码的同时,通过标准的注释方式轻松地...

    自动化文档生成工具DoxyGen 中文说明

    Doxygen 简介 Doxygen 是一个程序文件生成工具,可以将程序中的特定批注转换成为说明文件。它可以帮您产生出漂亮的技术文档,对于后面利用您的程序代码的人将会减少许多的负担。Doxygen 的使用可分为两大部分:首先...

    doxygen全部教程,和需要的工具,

    ### 一、Doxygen简介 Doxygen的主要功能包括: 1. **源代码解析**:Doxygen能自动分析源代码中的注释,提取出类、函数、变量等文档信息。 2. **文档模板**:提供多种输出格式,如HTML、LaTeX、RTF、XML等,方便...

    doxygen的使用

    #### 一、简介 Doxygen是一款强大的、跨平台的文档自动生成工具,主要用于根据源代码中的注释自动生成各种格式的文档(如HTML、LaTeX等)。它支持多种编程语言,包括但不限于C、C++、Java、Python等,并且能够很好...

    Doxygen使用文档

    Doxygen使用文档简介,Doxygen使用文档简介,Doxygen使用文档简介,Doxygen使用文档简介,Doxygen使用文档简介Doxygen使用文档简介Doxygen使用文档简介,Doxygen使用文档简介,Doxygen使用文档简介,Doxygen使用文档...

    doxygen-1.5.5.src

    一、doxygen简介 doxygen是由Hans van der Meer开发的一个文档生成工具,支持多种编程语言,包括C++, C, Java, Objective-C, PHP, Python, C#, IDL, Fortran, VHDL等。它的主要功能是通过解析源代码中的注释,生成...

    doxygen使用说明文档

    #### 一、Doxygen 简介 Doxygen 是一款非常强大的文档自动生成工具,尤其适用于 C++ 和其他多种编程语言。它能够帮助开发者根据代码注释自动生成各种形式的文档,如 HTML、LaTeX、RTF、PDF、CHM 等,便于团队成员...

    4Ch_learnRemote-0.1_style_doxygen_document_源码

    一、doxygen简介 doxygen是一款强大的自动文档生成工具,它能从源代码中提取注释并生成专业级的文档。doxygen支持多种语言,包括C++, C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO), ...

    doxygen+VIM文档实用指南for+C_C++

    #### 一、Doxygen 简介 Doxygen 是一款开源的、跨平台的文档生成工具,它可以为多种编程语言(如 C/C++、Java、Python 等)的源代码自动生成文档。Doxygen 最大的特点是能够直接从代码注释中提取信息,自动构建出...

    Doxygen Quick Reference

    #### Doxygen 简介 Doxygen 是一个非常流行的文档生成工具,它可以从源代码注释中自动生成清晰、结构化的文档。Doxygen 支持多种编程语言,包括 C、C++、Java、Python 和其他许多语言,并能生成 HTML、PDF、LaTeX 等...

    Doxygen入门资料

    #### 一、Doxygen简介 Doxygen是一款非常强大的文档自动生成工具,主要用于从程序源代码中的注释中提取信息,并生成HTML、LaTeX、PDF等多种格式的文档。这对于软件开发团队来说非常重要,因为它可以提高文档编写...

    doxygen官方手册1.8_中文手册1.6_doxygen使用详解.rar

    1. **doxygen简介** Doxygen是一款开源的、跨平台的文档系统,主要用于生成程序的API文档。它可以从源代码中自动提取类图、协作图、继承图、调用图等,帮助开发者理解和维护代码。此外,doxygen也支持注释格式化,...

    doxygen注释详解附有生成文档的对照PPT学习教案.pptx

    #### 一、Doxygen简介 Doxygen是一款流行的、跨平台的、用于生成程序文档的工具。它能够自动提取源代码中的注释,并根据这些注释自动生成HTML、PDF、LaTeX、RTF等多种格式的文档。通过使用Doxygen,可以有效地提高...

    DOXYGEN 简明教程

    #### 一、简介 Doxygen是一款强大的文档自动生成工具,主要用于根据源代码中的注释来自动生成HTML格式的文档。对于开发人员来说,掌握Doxygen的基本用法是非常必要的,这不仅可以提高项目的可读性和维护性,还能...

    Doxygen简介及使用说明.pdf

    Doxygen提供了一系列的指令来编写注释,如文件注释(@file)、作者信息(@author)、类或函数的简介(@brief)、参数说明(@param)、返回值说明(@return)、特定返回值的意义(@retval)等。 具体的注释格式如下...

    doxygen-1.8.3-setup

    **一、Doxygen简介** Doxygen,版本号1.8.3,是一款广泛使用的源代码文档生成器,其主要功能是从源代码中提取出注释,自动生成结构化的文档,包括类图、时序图、协作图等,帮助开发者更好地理解和维护项目。该版本...

    sourceinsight 便捷插件 符合Doxygen的注释标准

    一、SourceInsight简介 SourceInsight是一款广泛使用的源代码分析工具,它支持多种编程语言,包括C、C++、Java等。其强大的代码跳转、自动完成功能以及实时语法高亮显示,让开发者在阅读和编辑代码时更加得心应手。...

Global site tag (gtag.js) - Google Analytics