Doxygen 会以多种方式索引您的源代码,以便更轻松地浏览和查找所需内容。然而,在某些情况下,您可能需要通过关键字搜索而不是浏览。
默认情况下,HTML 浏览器不具备跨多个页面的搜索功能,因此需要 Doxygen 或外部工具来协助实现此功能。
Doxygen 提供了 7 种不同的方式来为 HTML 输出添加搜索功能,每种方式都有其自身的优点和缺点
启用搜索的最简单方法是启用内置的客户端搜索引擎。此引擎仅使用 JavaScript 和 DHTML 实现,并且完全在客户端浏览器上运行。因此,无需任何额外的工具即可使其工作。
要启用它,请在配置文件中将 SEARCHENGINE 设置为 YES
,并确保 SERVER_BASED_SEARCH 设置为 NO
。
此方法的另一个优点是它提供实时搜索,即搜索结果会在您键入时呈现和调整。
此方法也有其缺点:它仅限于搜索符号。它不提供全文搜索功能,并且不能很好地扩展到非常大的项目(此时搜索会变得非常慢)。此外,搜索是从索引项的开头开始的,因此当有可用项 A_STRING
、AA_STRING
和 STRING
并且在搜索框中键入 A
时,它会找到 A_STRING
和 AA_STRING
,但是当键入例如 STR
时,它只会找到 STRING
而不是 A_STRING
。
如果您计划将 HTML 文档放在 Web 服务器上,并且该 Web 服务器具有处理 PHP 代码的能力,那么您也可以使用 Doxygen 的内置服务器端搜索引擎。
要启用此功能,请在配置文件中将 SEARCHENGINE 和 SERVER_BASED_SEARCH 都设置为 YES
,并将 EXTERNAL_SEARCH 设置为 NO
。
与客户端搜索引擎相比,其优点是它提供全文搜索,并且可以很好地扩展到中型项目。
缺点是它不能在本地工作(即使用“file://”URL),并且不提供实时搜索功能。
在 Doxygen 的 1.8.3 版本中,添加了另一个基于服务器的搜索选项。使用此选项,Doxygen 会生成可搜索的原始数据,并由外部工具来完成索引和搜索,这意味着您可以使用自己选择的索引器和搜索引擎。为了简化操作,Doxygen 附带了一个基于 Xapian 开源搜索引擎库的示例索引器 (doxyindexer) 和搜索引擎 (doxysearch.cgi)。这两个二进制文件都包含在发行版中,但默认情况下不安装;可以手动将它们从 bin
文件夹复制到例如 /usr/local/bin
或 /var/www/cgi-bin
等所需位置。
要启用此搜索方法,请将 SEARCHENGINE、SERVER_BASED_SEARCH 和 EXTERNAL_SEARCH 都设置为 YES
。
有关配置详细信息,请参阅 外部索引和搜索。
与选项 2 相比,其优点是此方法(可能)可以扩展到非常大的项目。还可以将多个 Doxygen 项目和外部数据合并到一个搜索索引中。与搜索引擎的交互方式使其可以从本地 HTML 页面进行搜索。此外,搜索结果具有更好的排名并显示上下文信息(如果可用)。
缺点是它需要一个可以执行 CGI 二进制文件的 Web 服务器,并且在运行 Doxygen 后需要额外的索引步骤。
如果您在 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 的积极支持。虽然该工具对大多数人来说工作正常,但有时会无缘无故崩溃(多么典型)。
如果您在 macOS 10.5 或更高版本上运行 Doxygen,则可以使用 Doxygen 生成的 HTML 文件创建一个“文档集”。文档集由一个具有特殊结构的单个目录组成,该目录包含 HTML 文件以及预编译的搜索索引。可以将文档集嵌入到 Xcode 中(Apple 提供的集成开发环境)。
要启用文档集的创建,请在配置文件中将 GENERATE_DOCSET 设置为 YES
。您可能还需要设置其他几个与文档集相关的选项。Doxygen 完成后,您将在 HTML 输出目录中找到一个 Makefile。在此 Makefile 上运行“make install”将编译并安装文档集。有关更多信息,请参阅本文。
此方法的优点是它可以很好地与 Xcode 开发环境集成,例如,允许您在编辑器中单击一个标识符并跳转到 Doxygen 文档中的相应部分。
缺点是它仅在 macOS 上与 Xcode 结合使用时才有效。
如果您为 Qt 应用程序框架开发或想要安装该框架,您将获得一个名为 Qt 助手的应用程序。这是 Qt 压缩帮助文件 (.qch
) 的帮助查看器。
要启用此功能,请将 GENERATE_QHP 设置为 YES
。您还需要填写其他 Qt 帮助相关选项,例如 QHP_NAMESPACE、QHG_LOCATION、QHP_VIRTUAL_FOLDER。有关更多信息,请参阅本文。
在功能方面,Qt 压缩帮助功能与 CHM 输出相当,另外的优点是编译 QCH 文件不限于 Windows。
缺点是它需要为每个用户设置 Qt 4.5(或更高版本),或者将 Qt 帮助助手与文档一起分发,由于它目前不能作为单独的包提供,因此这很复杂。
如果您使用 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。