Getting started with Doxygen

可执行文件doxygen是解析源文件并生成文档的主程序.

另外, 也可以使用可执行文件doxywizard, 是用于编辑配置文件, 以及在图形环

境下使用doxygen的图形前端.

  • doxygen

    • 读取源文件
    • 读取自定义的, header,footer,image
    • 读取, 生成: tag文件
    • 读取, 生成: layout文件
    • 读取, 生成, 更新: 配置文件, doxyfile <=> doxywizard
    • 生成: XML文件
    • 生成: latex文件+makefile => make ps, make pdf => 生成ps,PDF
    • 生成: man page
    • 生成: refman.rtf => word导入
    • 生成: html页面

step 0: 检查doxygen是否支持你使用的编程语言

xxx

step 1: 创建一个配置文件

Doxygen使用一个配置文件来决定所有的设置. 每个项目都应该有它自己的配置文件. 项目

可以只由一个配置文件构成, 也可以是递归扫描得到的整个源文件树

为了简化配置文件的创建, doxygen可以替你创建一个模板配置文件. 如果需要这样的话,

使用-g选项调用doxygen:

doxygen -g <config-file>

其中config-file是配置文件的名称. 如果你省略了文件名, 会创建一个名为Doxyfile的文

件. 如果已经有一个叫做config-file的文件, doxygen会先将其重命名为config-file.bak.

如果你使用-做为文件名, doxygen会试图从标准输入中读取配置文件, 对脚本有用.

配置文件可以

配置文件格式类似makefile. 由一系列的赋值(tags)构成:

TAGNAME = VALUE

or

TAGNAME = VALUE1 VALUE2...

你可以让生成的模板配置的多数配置保留默认值就好.

如果不想要使用文本编辑器编辑配置文件, 你应该看一下doxywizard, 这个是一个可以创

建, 读取, 写入doxygen配置文件的GUI前端, xxx

对于由少数C/C++源文件和头文件构成项目, 可以留空INPUT, doxygen会在当前目录下搜

索源文件.

如果你有一个更大代码树, 应该将INPUTtag设置为根目录(或者多个目录), 并且在

FILE_PATTERNStag中添加一个或者多个文件模式(比如*.c *.h). 只有匹配其中的

pattern的文件会被解析(如果pattern缺省, 会使用doxygen支持的文件类型的典型

pattern). 要递归parsing代码树的话, 你需要设置RECURSIVEtag为YES. 要进一步微调要

解析的文件列表, 可以使用EXCLUDE或者EXCLUDE_PATTERNStag. 比如, 要忽略源代码树

中所有的测试目录, 可以使用:

EXECLUDE_PATTERNS = */test/*

doxygen会根据文件的拓展来决定如何解析一个文件:

  • .dox,doc,.c,.h,.txt: C/C++
  • .md,.markdown: Markdown
  • ..

其他的拓展, 如果没有加入到FILE_PATTERNS并且恰当设置EXTENSION_MAPPING, 不会

parse

如果你开始在一个已有的项目(没有任何doxygen了解的文档)中使用doxygen, 你仍然可以大

致了解结构是怎样的, 文档生成的结果大概是什么. 如果需要这样的话, 必须在配置文件中

设置EXTRACT_ALLtag为YES. 然后, doxygen会认为你的代码中所有的东西都是已经记录了

文档. 要注意, 在EXTRACT_ALL设置为YES的时候, 会warning xxx

要分析软件已有的一部分, 交叉引用源文件中一个(已有记录)实体的定义是很有用的. 如果

你将SOURCE_BROWSERtag设置为YES.

也可以设置INLINE_SOURCES为YES来将源文件直接包含到文档中(比如在code reviews的时

候是很好用的)

step 2: 运行doxygen

要生成文档, 可以使用:

doxygen <config-file>

根据你的设置, doxygen会在输出目录中创建html,rtf, latex, xml, man, 以及/或者

docbook目录....

默认的输出目录是调用doxygen的目录. 输出要写入的根目录可以使用OUTPUT_DIRECTORY

改变. 格式特定的目录可以使用 HTML_OUTPUT, RTF_OUTPUT, LATEX_OUTPUT,

XML_OUTPUT,MAN_OUTPUT,以及DOCBOOK_OUTPUTtag来选择. 如果输出目录不存在,

doxygen会试图替你创建它(但是不会试图递归创建整个目录(mkdir -p))

HTML输出

生成的HTML文档可以通过html文件中的index.html文件浏览. 最好是使用支持CSS的浏览器

部分HTML部分特性(比如GENERATE_TREEVIEW或者搜索)要求浏览器支持动态HTML和JavaScript.

LaTeX输出

生成的LaTeX文档必须先由LaTeX编译器编译. 为了简化编译生成的文档的过程, doxygen在

latex目录中写了一个Makefile..

Makefile的内容和target屈居于USE_PDFLATEX的设置, 如果未启用(NO), 那么make会生成

dvi文件. 可以使用xdvi浏览或者转换为PostScript文件(make ps)..

Man page输出

生成的man page可以使用man程序浏览. 你需要确保man目录处于man path(MANPATH环境变量

)中. man page有一些限制..

Step 3: Documenting the sources

尽管源代码的记录是当做第三步给出, 在一个新的项目中, 这当然应该是step 1. 这里我认

为你已经有一些代码, 并且想要doxygen来生成一个描述API的良好文档, 以及, 可能的内部

细节和一些相关设计文档.

如果配置文件中的EXTRACT_ALL设置为NO(默认的), 则doxygen只会为有记录的实体生成文

档. 所以, 你如果记录呢? 对于成员, 类, 以及名称空间, 有两个基本选项:

  1. 在member, class, namespace的声明之前添加一个special文档块. 对于file, class,

    以及namespace成员, 也可以将文档直接置于member之后.
  2. 在别的地方(另一个文件或者另一个位置)置special文档块并且在文档块中加一个

    structural command. 结构化命令将一个文档块链接至一个可以被记录的实体(member,

    class,namespace或者文件)

第一个选项的有点是, 你不需要重复实体的名称.

文件只能使用第二个选项记录, 因为没有法子在文件之前加文档块. 当然, 文件成员(函数,

变量, typedef, defines)必须要明确的结构化命令: 在其之前或者之后添加一个特殊文档

块就可以了

特殊文档块中的文本在写入HTML或者LaTeX输出文件之前会被解析:

在解析的过程中, 会进行如下步骤:

  • markdown格式话或替换为对应的HTML或者特殊命令
  • 文档中的特殊命令会执行
  • 如果一行由一些空格加上一个或者多个*起始, 所有的空格或者*都会被移除(C注习惯

    )
  • 所有生成的空白行都当做是段落分隔符. 你就没得必要在自己使用new-paragraph命令

    来增加可读性了.
  • 对于关联了有记录的类的word(除非word前缀了%, 这个情况下不会链接, 并且%会移除)
  • 当在文本中碰到了特定的pattern的时候会创建到member的链接
  • 文档中的HTML tags会解释, 并且在LaTeX输出中会转换为LaTeX等价的形式.


使用doxygen的更多相关文章

  1. 在QtCreator中使用doxygen

    接触Doxygen后,认识到其强大之处,一口气将之前的烂代码重构了一遍,所有的文件头,函数注释等等都是手动添加注释.在keil中可以看到其对JavaDoc风格的注释有高亮,非常好看.但是keil这个I ...

  2. Windows下使用doxygen阅读和分析C/C++代码

    Windows下使用doxygen阅读和分析C/C++代码 转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html 虽然使用各种IDE或者Sou ...

  3. (转)Doxygen文档生成工具

    http://blog.csdn.net/lostaway/article/details/6446786 Doxygen 是一个支持 C/C++,以及其它多种语言的跨平台文档生成工具.如同 Java ...

  4. ubuntu使用doxygen

    1.安装 sudo apt-get install doxygen按tab键 doxygen        doxygen-dbg    doxygen-doc    doxygen-gui    d ...

  5. 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码

    在一个应用的整个开发过程中涉及到了无数的步骤.其中一些是应用的说明,图片的创作,应用的实现,和实现过后的测试阶段.写代码可能组成了这个过程的绝大部分,因为正是它给了应用生命,但是这样还不够,与它同等重 ...

  6. Win7下Doxygen配置与使用

    1.  下载与安装 1.1 下载 Doxygen官方安装程序及其手册下载地址,目前使用版本为1.8.8. 安装程序:http://www.stack.nl/~dimitri/doxygen/downl ...

  7. Bullet的学习资源(用Doxygen生成API文档)

    Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...

  8. [Doxygen]Doxygen

    1. Doxygen做什么? 首先这是一个文档生成工具,而不是代码中的注释生成工具.其次,如何生成对应文档,那就是按照一个配置文件中给出的配置格式来书写注释的时候,通过工具就可以解析代码注释最终生成文 ...

  9. Doxygen给C程序生成注释文档

    近段时间,一直在学习华为C语言编程规范(2011版),在“注释”这一章中发现了一种“Doxygen”的注释转文档工具,查看诸多相关资料,并进行编程实践,终于可以利用Doxygen给C程序生成注释文档. ...

  10. doxygen的使用(二)给代码添加javadoc风格的注释

    原创文章,欢迎阅读,禁止转载.本文记一下javadoc风格注释的写法,这些特殊格式的注释称作标签.按照这种规范写的注释才能生成到文档中. 块注释的写法 /** * @brief 这个块注释 * dox ...

随机推荐

  1. VisualStudio 2019 新特性

    很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...

  2. 008.MFC_ScrollBar

    滚动条 CScrollBar 水平滚动条控件和垂直滚动条 滚动条消息 SB_THUMBTRACK SB_LINELEFT SB_LINERIGHT SB_PAGELEFT SB_PAGERIGHT 一 ...

  3. lnmp一键安装,安装php时失败

    查看安装日志 直接cd进入根目录报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 解决办法如下#使用wget可 ...

  4. 一些实战中总结的 javascript 开发经验

    Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让用户喜欢的网站. 尽管很多的开发人员都乐于颂扬 javascript,但是仍旧有人看到它的阴暗面. ...

  5. Java面向对象程序设计第9章1-9

    Java面向对象程序设计第9章1-9 1. 线程和进程的联系和区别是什么? 联系: 一个进程可以包括多个线程. 区别: 进程: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统 ...

  6. HTTP中GET与POST的区别 99%的错误认识

    @[TOC本篇文章分两部分,第一部分可以列为初为新人的装逼失败模式,第二部分列为修炼低调模式. 装逼失败模式:99%的人对GET和POST的认识 修炼低调模式:1%不知道的进阶认识 GET和POST, ...

  7. Rust入坑指南:亡羊补牢

    如果你已经开始学习Rust,相信你已经体会过Rust编译器的强大.它可以帮助你避免程序中的大部分错误,但是编译器也不是万能的,如果程序写的不恰当,还是会发生错误,让程序崩溃.所以今天我们就来聊一聊Ru ...

  8. GNE: 4行代码实现新闻类网站通用爬虫

    GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.GNE在提 ...

  9. Web基础了解版11-Ajax-JSON

    Ajax AJAX即“Asynchronous Javascript And XML”:是,不发生页面跳转.异步请求载入内容并改写局部页面内容的技术. 也可以简单的理解为通过JS向服务器发送请求.   ...

  10. j接近50道经典SQL练习题,附建表SQL解题SQL

    说明 本文章整理了47道常见sql联系题,包括建表语句,表结构,习题列表,解题答案都涵盖在本文章内.文末提供了所用SQL脚本下载链接.所有解题答案都是本人自己写的,广大读者如果在阅读使用中,有任何问题 ...