Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。

1简介

Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的批注,与打捞泰坦尼克号同样的辛苦。大部分有用的批注都是属于针对函式,类别等等的说明。所以,如果能依据程序本身的结构,将批注经过处理重新整理成为一个纯粹的参考手册,对于后面利用您的程序代码的人而言将会减少许多的负担。不过,反过来说,整理文件的工作对于您来说,就是沉重的负担。
对于未归档的源文件,也可以通过配置Doxygen来提取代码结构。或者借助自动生成的包含依赖图(includedependency graphs)、继承图(inheritance diagram)以及协作图(collaborationdiagram)来可视化文档之间的关系。Doxygen生成的帮助文档的格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。
一个好的程序设计师,在写程序时,都会在适当的地方加上合适的批注。如果,能够在撰写批注时,稍微符合某种格式,接着就可以透过一个工具程序依据程序结构及您的批注产生出漂亮的文件。这将令许多工作繁重的程序设计师有时间多喝几杯咖啡。
Doxygen 就是这样的一个工具。在您写批注时,稍微按照一些它所制订的规则。接着,他就可以帮您产生出漂亮的文件了。因此,Doxygen 的使用可分为两大部分。首先是特定格式的批注撰写,第二便是利用Doxygen的工具来产生文件。

2程序语言

* C/C++
* Java
* Objective-C
* Python
* IDL (Corba, Microsoft及KDE-DCOP类型)
* Fortran
* VHDL
* PHP
* C#

3文件格式

* HTML
* XML
* LaTeX
* RTF (MS-Word)
* PostScript
* Unix Man Page
而其中还可衍生出不少其它格式。如有了LaTeX 文件后,就可以透过一些工具产生出PS或是PDF档案。
在多国语言的支持方面,Doxygen 目前可支持的约有2,30种。自Doxygen 1.2.16开始支持繁体中文(这正是小弟做的好事)。所以在目前一些Open Source 的程序文档管理器中,Doxygen 算是相当完整的一套。在程序语言处理上面,Doxygen也算是少数在Borland C++Builder 的语法下还能够正常运作的工具之一(若非如此,小弟也不会推荐它)。
本文的目的是希望在经过仔细阅读本文之后能够给大家一个概略性的了解。以便可以很容易的上手使用Doxygen。至于Doxygen本身的详细使用,各位可以参考随着Doxygen 所附的文件。实际上,Doxygen 自己的使用手册就是使用Doxygen 产生的。您可以看到他实际上能够产生远比Reference Book更复杂的文件。

4安装

Doxygen 的安装可说十分的简单,本文仅介绍binary档案的安装,若您有兴趣从source code重新compile起来,请自行查阅参考手册。
首先,请您先至doxygen 的网站上面抓取最新版本的doxygen 回来。目前,只要您是Linux, Solaris, Mac OS X, HP-UX, 甚至是UnixWare,都有compile好的binary版本可以抓取。如果是Windows 95/98/ME/NT/2000/XP,甚至还有Setup的版本可以抓取。所以安装过程可说十分简单。只要给予正确的安装目录,相信一般在安装上是不会遇到什么问题的。
另外,如果您是Linux或是Windows,可以另外抓取Doxygen Wizard的程序。这是一个辅助工具,可以很快的帮您建立一个Doxygen 的组态档案。透过这个组态档案,您就可以很快的将文件产生出来。另外,若没有使用Doxygen Wizard,还是可以使用一般的文字编辑器将这个组态档制作出来。
若安装成功,您应该可以看到doxygen 这个执行文件出现在您的系统中。若是Windows 平台,则可看到在程序集中有Doxygen 这个Folder出现。

5组态

Doxygen 产生文件可以分为三个步骤。一是为Project 建立组态档,二是在程序代码中加上符合Doxygen所定义批注格式。三是使用Doxygen来产生批注。
因此,第一步就是为您的Project 制作Doxygen 的组态档案。这个所谓的组态档案,格式其实与很简单。就是一些Key 与值的设定。每个设定为一行。若第一行开头为"#" 表示该行为批注。Doxygen 会忽略它。每个设定行的格式有两种,分别如下:
TAG = value [value, ...]
TAG += value [value, ...]
第一种形式是最常见的,也就是要设定一个TAG (也就是一个Key ),他的值为右边所定义的部分。原则上每个值都是单一的英文字,如果您要定义的值有空格符包含在内,可使用双引号将它括住。如果要定义的值超过一个以上,可使用逗号","予以分隔开来。
如果您要定义的TAG 是属于表列型态的,也就是他会有很多的值分别以逗号隔开。在Doxygen 组态档中允许您在不同的地方重复定义。只是后面的定义应使用上面所说的第二种形式。此种形式会将前后两个定义的值合并在一起。
知道这个基本格式后,剩下就是根据各个TAG 的意义来进行设定。关于TAG 的定义很多,此处我们仅针对必要用到的TAG 进行说明,剩下的部分请自行翻阅使用说明。
由于Doxygen 的TAG 还算不少,为了方便使用,Doxygen 自身提供了一个方便的选项,可以帮您建立一份空白的Doxygen档案(Doxygen 是Doxygen 预设的组态档名)。
> doxygen Doxygen
透过这个命令,您可以得到一个Doxygen 档案,接下来就可使用一般的文字编辑器来进行编辑。
下面将针对几个必要的TAG 进行说明:
PROJECT_NAME Project 的名字,以一个单字为主,多个单字请使用双引号括住。
PROJECT_VERSION
Project的版本号码。
OUTPUT_DIRECTORY
输出路径。产生的文件会放在这个路径之下。如果没有填这个路径,将会以目前所在路径来作为输出路径。
OUTPUT_LANGUAGE
输出语言。预设为English。1.2.16 版后,您可以使用Chinese-Traditional 来输出中文繁体的格式。
INPUT
指定加载或找寻要处理的程序代码档案路径。这边是一个表列式的型态。并且可指定档案及路径。举例来说若您有a.c, b.c, c.c 三个档案。您可使用INPUT = a.c, b.c, c.c 的方式。若您给定一个目录,该目录下面所有档案都会被处理。
FILE_PATTERNS
如果您的INPUT Tag 中指定了目录。您可以透过这个Tag来要求Doxygen在处理时,只针对特定的档案进行动作。例如:您希望对目录下的扩展名为.c, .cpp及.h的档案作处理。您可设定FILE_PATTERNS = *.c, *.cpp, *.h。
RECURSIVE
这是一个布尔值的Tag,只接受YES或NO。当设定为YES时,INPUT所指定目录的所有子目录都会被处理。
EXCLUDE
如果您有某几个特定档案或是目录,不希望经过Doxygen处理。您可在这个Tag中指定。
EXCLUDE_PATTERNS
类似于FILE_PATTERNS的用法,只是这个Tag是供EXCLUDE所使用。
SOURCE_BROWSER
如果设定为YES,则Doxygen会产生出源文件的列表,以供查阅。
INLINE_SOURCES
如果设定为YES ,则程序代码也会被嵌入于说明文件中。
ALPHABETICAL_INDEX
如果设定为YES,则一个依照字母排序的列表会加入在产生的文件中。
GENERATE_HTML
若设定为YES ,就会产生HTML版本的说明文件。HTML文件是Doxygen预设产生的格式之一。
HTML_OUTPUT
HTML文件的输出目录。这是一个相对路径,所以实际的路径为OUTPUT_DIRECTORY加上HTML_OUTPUT。这个设定预设为html。
HTML_FILE_EXTENSION
HTML文件的扩展名。预设为.html。
HTML_HEADER
要使用在每一页HTML文件中的Header。如果没有指定,Doxygen会使用自己预设的Header。
HTML_FOOTER
要使用在每一页HTML文件中的Footer。如果没有指定,Doxygen会使用自己预设的Footer。
HTML_STYLESHEET
您可给定一个CSS 的设定,让HTML的输出结果更完美。
GENERATE_HTMLHELP
如设定为YES,Doxygen会产生一个索引文件。这个索引文件在您需要制作windows 上的HTML格式的HELP档案时会用的上。
GENERATE_TREEVIEW
若设定为YES,Doxygen会帮您产生一个树状结构,在画面左侧。这个树状结构是以JavaScript所写成。所以需要新版的Browser才能正确显示。
TREEVIEW_WIDTH
用来设定树状结构在画面上的宽度。
GENERATE_LATEX
设定为YES 时,会产生LaTeX 的文件。不过您的系统必需要有安装LaTeX 的相关工具。
LATEX_OUTPUT
LaTeX文件的输出目录,与HTML_OUTPUT用法相同,一样是指在OUTPUT_DIRECTORY之下的路径。预设为latex。
LATEX_CMD_NAME
LaTeX程序的命令名称及档案所在。预设为latex。
GENERATE_RTF
若设定为YES ,则会产生RTF 格式的说明档。
RTF_OUTPUT
与HTML_OUTPUT 用法相同,用来指定RTF 输出档案路径。预设为rtf。
GENERATE_MAN
若设定为YES ,则会产生Unix Man Page 格式的说明文件。
MAN_OUTPUT
与HTML_OUTPUT 用法相同,用来指定Man Page的输出目录。预设为man。
GENERATE_XML
若设定为YES ,则会产生XML 格式的说明文件。
ENABLE_PREPROCESSING
若设定为YES ,则Doxygen 会启动C 的前置处理器来处理原始档。
PREDEFINED
可以让您自行定义一些宏。类似于gcc 中的-D选项。
若上面这些基本的Tag 都设定正确,接下来就是将您的Source Code
批注修改成为正确的格式。若您觉得用一般文字编辑器来编辑组态档
很麻烦,建议您可以使用Doxygen Wizard这个工具程序。他可以很快
的建构出您所需要的Doxygen档案。

6使用步骤

由于只是工具的使用,这里不介绍它的原理,直接从使用步骤开始。Doxygen的使用步骤非常简单。主要可以分为:
1)第一次使用需要安装doxygen的程序
2)生成doxygen配置文件
3)编码时,按照某种格式编写注释
4)生成对应文档
doxygen的安装非常简单, linux下可以直接下载安装包运行即可,下载源代码编译安装也是比较通用的编译安装命令。请参考其安装文档完成安装。
Doxygen在生成文档时可以定义项目属性以及文档生成过程中的很多选项,使用下面命令能够产生一个缺省的配置文件:
doxygen -g [配置文件名]
可以根据项目的具体需求修改配置文件中对应的项,具体的修改过程在下面介绍。修改过的配置文件可以作为以后项目的模板。
让doxygen自动产生文档,平常的注释风格可不行,需要遵循doxygen自己的格式。具体如何写doxygen认识的注释在第3节详细介绍。
OK,代码编完了,注释也按照格式写好了,最后的文档是如何的哪?非常简单,运行下面的命令,相应的文档就会产生在指定的目录中。
doxygen [配置文件名]
需要注意的是doxygen并不处理所有的注释,doxygen重点关注与程序结构有关的注释,比如:文件、类、结构、函数、变量、宏等注释,而忽略函数内变量、代码等的注释。

7配置文件

doxygen配置文件的格式是也是通常的unix下配置文件的格式:注释'#'开始;tag = value [,value2…];对于多值的情况可以使用 tag += value [,value2…]。
对doxygen的配置文件的修改分为两类:一种就是输出选项,控制如何解释源代码、如何输出;一种就是项目相关的信息,比如项目名称、源代码目 录、输出文档目录等。对于第一种设置好后,通常所有项目可以共用一份配置,而后一种是每个项目必须设置的。下面选择重要的,有可能需要修改的选项进行解释 说明,其他选项在配置文件都有详细解释。
TAG 缺省值 含义
PROJECT_NAME 项目名称
PROJECT_NUMBER 可以理解为版本信息
OUTPUT_DIRECTORY 输出文件到的目录,相对目录(doxygen运行目录)或者绝对目录
INPUT 代码文件或者代码所在目录,使用空格分割
FILE_PATTERNS *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ *.idl *.odl 指定INPUT的目录中特定文件,如:*.cpp *.c *.h
RECURSIVE NO 是否递归INPUT中目录的子目录
EXCLUDE 在INPUT目录中需要忽略的子目录
EXCLUDE_PATTERNS 明确指定的在INPUT目录中需要忽略的文件,如:FromOut*.cpp
OUTPUT_LANGUAGE English 生成文档的语言,当前支持2、30种语言,国内用户可以设置为Chinese
USE_WINDOWS_ENCODING YES(win版本)
NO(unix版本) 编码格式,默认即可。
EXTRACT_ALL NO 为NO,只解释有doxygen格式注释的代码;为YES,解析所有代码,即使没有注释。类的私有成员和所有的静态项由EXTRACT_PRIVATE和 EXTRACT_STATIC控制
EXTRACT_PRIVATE NO 是否解析类的私有成员
EXTRACT_STATIC NO 是否解析静态项
EXTRACT_LOCAL_CLASSES YES 是否解析源文件(cpp文件)中定义的类
SOURCE_BROWSER NO 如果为YES,源代码文件会被包含在文档中
INLINE_SOURCES NO 如果为YES,函数和类的实现代码被包含在文档中
ALPHABETICAL_INDEX NO 生成一个字母序的列表,有很多类、结构等项时建议设为YES
GENERATE_HTML YES 是否生成HTML格式文档
GENERATE_HTMLHELP NO 是否生成压缩HTML格式文档(.chm)
GENERATE_LATEX YES 是否生成latex格式的文档
GENERATE_RTF NO 是否生成RTF格式的文档
GENERATE_MAN NO 是否生成man格式文档
GENERATE_XML NO 是否生成XML格式文档

8注释

3.1 注释风格

3.2 doxygen常用注释格式

3.3 doxygen常用注释命令

4. 注释的书写

9建立文件

当您前面所有的步骤都正确无误执行后,只需要执行下面的命令就可建立出您要的文件了:
> doxygen Doxygen
如果有错误产生,请检查您的Doxygen 组态档设定是否有误,目录的存取权限是否足够。如果输出的结果不正确,请检查您的批注是否符合格式。批注的位置是否正确。举例来说,您不可在说明class的批注与class 本身插入其它的程序代码或宣告。否则Doxygen 就无法将批注与该class对应起来。
如果您使用Doxygen Wizard,可直接使用上面的Run 的按钮或选单项目来制作说明文件。如果是产生HTML文件,在HTML_OUTPUT 所指定的目录中的index.html将是您说明文件的首页。
在中文繁体方面,目前我仅成功制作出HTML与RTF 格式的说明文件。其它格式的过程比较复杂,需要搭配其它工具,有待各位自行尝试。

10版本

2012年12月28日,Doxygen 1.8.3 发布,文档生成工具[1]
 
 
来自:http://baike.baidu.com/link?url=DnXmXcDVp_FnUuxsxPk3DIj8iLcdma1rYQ3ntb6cwHaQVP8zx_YPz6CgMNurF3N3vi9muvUk2Qjh5PtoV7iHza
 
下载地址:http://www.onlinedown.net/soft/117010.htm

开发文档生成工具--Doxygen相关推荐

  1. 文档生成工具-Doxygen使用方法以及注释规则

    最近接触了一款程序 文档生成工具-Doxygen.在网上一搜索原来这么多人知道,打算把它的使用做一个总结,以及其注释的规则. 概述: Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文 ...

  2. 代码文档生成工具-Doxygen生成CHM和RTF图文教程

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载doxyge ...

  3. 代码文档生成工具Doxygen教程及实例

    程序员的很多文档,特别是有代码的文档,绝大部分都是由一款文档生成工具[Doxygen]生成. 什么是Doxygen? Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件.通 ...

  4. libreoffice 开发文档_工具库-基于LibreOffice实现文档操作

    基于libreoffice实现的文档转换项目,无框架依赖,即插即用 1. 技术栈 LibreOffice:v6.2.3 jodconverter:4.2.2 PDFBox:2.0.12 cglib动态 ...

  5. Doxygen文档生成工具

    Doxygen代码文档生成工具 文章目录 Doxygen代码文档生成工具 Doxygen Doxygen的注释 vscode插件 Doxygen实际使用 Doxygen 根据百度百科说法,Doxyge ...

  6. Doxygen自动文档生成工具在Eclipse中的集成及使用举例

    你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...

  7. DotNet 项目开发文档的自动生成和相关工具的使用

    在 VS.Net 的 IDE 中对C#提供了一些可以自动生成的 XML 注释,使用这些注释可以对代码中定义的对象进行说明.注解:通过设置项目属性,在生成项目时,可以让VS.Net自动的将这些注释信息输 ...

  8. .NET6使用DOCFX根据注释自动生成开发文档

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  9. rap技术原理_RAP如何自动在 方法上生成前端开发文档

    针对阿里妈妈前端大牛来说这个工具的诞生,为java开发人员节约了多少开发时间.非常感谢. 废话不多说直接看源码: 安装说明大家可以根据上面的文档源码来直接部署.重点来了.重要的话说三遍.idea如何完 ...

最新文章

  1. bzoj3270 博物馆
  2. 复合非聚集索引里列的顺序的重要性
  3. leetcode 149. 直线上最多的点数
  4. 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序
  5. Spring Data JPA教程,第一部分: Configuration(翻译)
  6. linux gpio信号量,执行完? OSIntExit(); 后,再进行任务调度,可是那两个任务都是在等待信号量啊,难道执行完中断函数后会释放一个信号量吗?...
  7. 开发环境运行正常,发布服务器后提示HTTP 错误 403.14 - Forbidden
  8. 设计模式---备忘录模式(C++实现)
  9. 杭电1014 Uniform Generator
  10. android程序图标透明,怎么把android手机软件图标变透明
  11. vue less 换肤
  12. HDU 2042 不容易系列之二
  13. vscode环境搭建:配置prettier
  14. anroid获取ping值
  15. cuda实现卷积运算
  16. 阿里云视频点播指定清晰度
  17. 使用gpu服务器搭建人脸识别系统,基于GPU的大规模人脸识别系统的设计与实现
  18. Python编程之外星人入侵(一)
  19. 剧本翻译之メンアットワーク!4 ~ハンター達よ永遠に~猎人们的永远(序章2)
  20. indesign中调出字符样式快捷键_InDesign快捷键大全 InDesign常用快捷键分享

热门文章

  1. 虚拟机建立游戏服务器,在虚拟机上创建游戏服务器
  2. 海淘 海外购 iherb 礼券码 优惠码
  3. 制作APP没有这么难,不必望而却步
  4. 网络编程基础【day10】:我是一个线程(四)
  5. 学习笔记14--其他自动驾驶开发平台
  6. gitbook 插件 SEO
  7. C++中构造函数的超详细讲解
  8. Linux指令详解(Linux入门博文)
  9. 计算机丢失d3dcompile,电脑d3dcompiler43.dll文件丢失怎么办 文件丢失解决方法
  10. 上银驱动器使用手册_D1驱动器操作使用手册.pdf