搜索

Doxygen 会以多种方式索引您的源代码,以便更轻松地浏览和查找所需内容。然而,在某些情况下,您可能需要通过关键字搜索而不是浏览。

默认情况下,HTML 浏览器不具备跨多个页面的搜索功能,因此需要 Doxygen 或外部工具来协助实现此功能。

Doxygen 提供了 7 种不同的方式来为 HTML 输出添加搜索功能,每种方式都有其自身的优点和缺点

1. 客户端搜索

启用搜索的最简单方法是启用内置的客户端搜索引擎。此引擎仅使用 JavaScript 和 DHTML 实现,并且完全在客户端浏览器上运行。因此,无需任何额外的工具即可使其工作。

要启用它,请在配置文件中将 SEARCHENGINE 设置为 YES,并确保 SERVER_BASED_SEARCH 设置为 NO

此方法的另一个优点是它提供实时搜索,即搜索结果会在您键入时呈现和调整。

此方法也有其缺点:它仅限于搜索符号。它不提供全文搜索功能,并且不能很好地扩展到非常大的项目(此时搜索会变得非常慢)。此外,搜索是从索引项的开头开始的,因此当有可用项 A_STRINGAA_STRINGSTRING 并且在搜索框中键入 A 时,它会找到 A_STRINGAA_STRING,但是当键入例如 STR 时,它只会找到 STRING 而不是 A_STRING

2. 服务器端搜索

如果您计划将 HTML 文档放在 Web 服务器上,并且该 Web 服务器具有处理 PHP 代码的能力,那么您也可以使用 Doxygen 的内置服务器端搜索引擎。

要启用此功能,请在配置文件中将 SEARCHENGINESERVER_BASED_SEARCH 都设置为 YES,并将 EXTERNAL_SEARCH 设置为 NO

与客户端搜索引擎相比,其优点是它提供全文搜索,并且可以很好地扩展到中型项目。

缺点是它不能在本地工作(即使用“file://”URL),并且不提供实时搜索功能。

注意
将来,此选项可能会被下一个搜索选项替换。

3. 使用外部索引的服务器端搜索

在 Doxygen 的 1.8.3 版本中,添加了另一个基于服务器的搜索选项。使用此选项,Doxygen 会生成可搜索的原始数据,并由外部工具来完成索引和搜索,这意味着您可以使用自己选择的索引器和搜索引擎。为了简化操作,Doxygen 附带了一个基于 Xapian 开源搜索引擎库的示例索引器 (doxyindexer) 和搜索引擎 (doxysearch.cgi)。这两个二进制文件都包含在发行版中,但默认情况下不安装;可以手动将它们从 bin 文件夹复制到例如 /usr/local/bin/var/www/cgi-bin 等所需位置。

要启用此搜索方法,请将 SEARCHENGINESERVER_BASED_SEARCHEXTERNAL_SEARCH 都设置为 YES

有关配置详细信息,请参阅 外部索引和搜索

与选项 2 相比,其优点是此方法(可能)可以扩展到非常大的项目。还可以将多个 Doxygen 项目和外部数据合并到一个搜索索引中。与搜索引擎的交互方式使其可以从本地 HTML 页面进行搜索。此外,搜索结果具有更好的排名并显示上下文信息(如果可用)。

缺点是它需要一个可以执行 CGI 二进制文件的 Web 服务器,并且在运行 Doxygen 后需要额外的索引步骤。

4. Windows 编译的 HTML 帮助

如果您在 Windows 上运行 Doxygen,则可以使用 Doxygen 生成的 HTML 文件创建一个编译的 HTML 帮助文件 (.chm)。这是一个包含所有 HTML 文件的单个文件,并且还包含一个搜索索引。许多平台上都有此格式的查看器,Windows 甚至原生支持它。

要启用此功能,请在配置文件中将 GENERATE_HTMLHELP 设置为 YES。要让 Doxygen 为您编译 HTML 帮助文件,您还需要使用 HHC_LOCATION 配置选项指定 HTML 编译器 (hhc.exe) 的路径,并使用 CHM_FILE 指定生成的 CHM 文件的名称。

此方法的优点是结果是一个可以轻松分发的单个文件。它还提供全文搜索。

缺点是编译 CHM 文件仅在 Windows 上有效,并且需要 Microsoft 的 HTML 编译器,该编译器未得到 Microsoft 的积极支持。虽然该工具对大多数人来说工作正常,但有时会无缘无故崩溃(多么典型)。

5. macOS 文档集

如果您在 macOS 10.5 或更高版本上运行 Doxygen,则可以使用 Doxygen 生成的 HTML 文件创建一个“文档集”。文档集由一个具有特殊结构的单个目录组成,该目录包含 HTML 文件以及预编译的搜索索引。可以将文档集嵌入到 Xcode 中(Apple 提供的集成开发环境)。

要启用文档集的创建,请在配置文件中将 GENERATE_DOCSET 设置为 YES。您可能还需要设置其他几个与文档集相关的选项。Doxygen 完成后,您将在 HTML 输出目录中找到一个 Makefile。在此 Makefile 上运行“make install”将编译并安装文档集。有关更多信息,请参阅本文

此方法的优点是它可以很好地与 Xcode 开发环境集成,例如,允许您在编辑器中单击一个标识符并跳转到 Doxygen 文档中的相应部分。

缺点是它仅在 macOS 上与 Xcode 结合使用时才有效。

6. Qt 压缩帮助

如果您为 Qt 应用程序框架开发或想要安装该框架,您将获得一个名为 Qt 助手的应用程序。这是 Qt 压缩帮助文件 (.qch) 的帮助查看器。

要启用此功能,请将 GENERATE_QHP 设置为 YES。您还需要填写其他 Qt 帮助相关选项,例如 QHP_NAMESPACEQHG_LOCATIONQHP_VIRTUAL_FOLDER。有关更多信息,请参阅本文

在功能方面,Qt 压缩帮助功能与 CHM 输出相当,另外的优点是编译 QCH 文件不限于 Windows。

缺点是它需要为每个用户设置 Qt 4.5(或更高版本),或者将 Qt 帮助助手与文档一起分发,由于它目前不能作为单独的包提供,因此这很复杂。

7. Eclipse 帮助插件

如果您使用 Eclipse,您可以将 Doxygen 生成的文档嵌入为帮助插件。然后它将作为帮助菜单中“帮助内容”中可以启动的主题出现。当您首次搜索关键字时,Eclipse 将为文档生成搜索索引。

要启用帮助插件,请将 GENERATE_ECLIPSEHELP 设置为 YES,并通过 ECLIPSE_DOC_ID 为您的项目定义一个唯一标识符,即

   GENERATE_ECLIPSEHELP = YES
   ECLIPSE_DOC_ID       = com.yourcompany.yourproject

然后在 eclipse 的 plugin 目录中创建 com.yourcompany.yourproject 目录(因此与 ECLIPSE_DOC_ID 的值具有相同的名称),并在 Doxygen 完成后将帮助输出目录的内容复制到 com.yourcompany.yourproject 目录。然后重新启动 eclipse,使其找到新的插件。

Eclipse 帮助插件提供与 Qt 压缩帮助或 CHM 输出类似的功能,但它确实需要安装和运行 Eclipse。

转到下一节或返回索引