功能特性

  • 对文档编写者的额外工作要求极低。纯文本即可,支持 Markdown,如果需要更美观或结构化的输出,可以使用 HTML 标签和/或 Doxygen 的一些特殊命令。
  • 跨平台:可在 Windows 和多种 Unix 系统(包括 Linux 和 macOS)上运行。
  • 即使是没有文档的代码,也能对其进行索引、组织并生成可浏览和交叉引用的输出。
  • 为解析的源文件生成结构化 XML 输出,可供外部工具使用。
  • 支持 C/C++、Lex、Java、(Corba 和 Microsoft) Java、Python、VHDL、PHP IDL、C#、Fortran、Objective-C 2.0,以及某种程度上 D 语言源文件。
  • 支持对文件、命名空间、包、类、结构体、联合体、模板、变量、函数、类型定义、枚举和宏定义的文档化。
  • 兼容 Javadoc (1.1)、qdoc3 (部分兼容) 和 ECMA-334 (C# 规范)。
  • 附带一个 GUI 前端 (Doxywizard),方便编辑选项和运行 Doxygen。该 GUI 可在 Windows、Linux 和 macOS 上使用。
  • 自动在 HTML 中生成类和协作图(作为可点击的图像映射)以及 {\LaTeX} 中(作为封装的 PostScript 图像)。
  • 使用 Graphviz 工具包的 dot 工具生成包含依赖图、协作图、调用图、目录结构图和图形化类层次结构图。
  • 允许将实体分组为主题并创建主题的层次结构。
  • 灵活的注释位置:允许将文档放置在头文件中(实体声明之前)、源文件中(实体定义之前)或单独的文件中。
  • 生成一个类的所有成员列表(包括任何继承的成员)及其保护级别。
  • 同时输出在线格式(XHTML 和 UNIX 手册页)和离线格式({\LaTeX} 和 RTF)的文档(如果需要,可以禁用其中任何一种)。所有格式都经过优化,便于阅读。
    此外,可以使用 Microsoft 的 HTML Help Workshop (仅限 Windows) 从 HTML 输出生成压缩 HTML,也可以从 {\LaTeX} 输出生成 PDF。
  • 支持各种第三方帮助格式,包括 HTML Help、docsets、Qt-Help 和 eclipse help。
  • 包含一个完整的 C 预处理器,以允许正确解析条件代码片段并允许展开宏定义的所有或部分内容。
  • 自动检测 public、protected 和 private 部分,以及 Qt 特有的 signal 和 slot 部分。提取私有类成员是可选的。
  • 自动生成对文档化的类、文件、命名空间和成员的引用。还支持全局函数、全局变量、类型定义、宏定义和枚举的文档化。
  • 自动生成对基类/超类和继承/重写成员的引用。
  • 包含一个基于排名的快速搜索引擎,用于搜索类和成员文档中的字符串或单词(基于 PHP)。
  • 包含一个基于 JavaScript 的实时搜索功能,可在您输入时搜索符号(适用于小型到中型项目)。
  • 您可以在文档中输入普通的 HTML 标签。Doxygen 会自动将其转换为等效的 {\LaTeX}、RTF 和手册页对应内容。
  • 允许以与位置无关的方式引用为其他(由 Doxygen 文档化的)项目(或同一项目的另一部分)生成的文档。
  • 允许包含自动与文档交叉引用的源代码示例。
  • 还支持包含未文档化的类,允许快速了解(大型)代码段的结构和接口,而无需查看实现细节。
  • 允许(文档化的)实体与其在源代码中的定义自动交叉引用。
  • 所有源代码片段都经过语法高亮显示,便于阅读。
  • 允许在文档中包含函数/成员/类的定义。
  • 所有选项都从一个易于编辑且(可选)带注释的配置文件中读取。
  • 文档和搜索引擎可以转移到其他位置或机器,而无需重新生成文档。
  • 支持多种不同的字符编码,并在内部和生成的输出中使用 UTF-8。
  • Doxygen 可以生成一个布局,您可以使用和编辑它来更改每个页面的布局。
  • 有 100 多个可配置选项来微调输出。
  • 可以轻松处理大型项目。

尽管 Doxygen 现在可以用于任何用 Doxygen 支持的语言编写的项目,但最初它是专门为使用 Qt Software 的 Qt 工具包的项目而设计的。我曾尝试使 Doxygen“Qt 兼容”。也就是说:Doxygen 可以读取 Qt 源代码中包含的文档,并创建一个与 Qt Software 生成的类浏览器非常相似的类浏览器。Doxygen 理解 Qt 使用的 C++ 扩展,例如信号和槽,以及 Qt 源代码中使用的许多标记命令。

Doxygen 还可以自动生成指向已使用 Doxygen 或 Qt 的非公开类浏览器生成器生成的现有文档的链接。对于基于 Qt 的项目,这意味着每当您引用属于 Qt 工具包的成员或类时,都会生成指向 Qt 文档的链接。这与该文档的位置无关!

前往下一节或返回索引