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 Assistant 的应用程序。这是一个 Qt 压缩帮助文件(.qch
)的帮助查看器。
要启用此功能,请将 GENERATE_QHP 设置为 YES
。您还需要填写其他与 Qt 帮助相关的选项,例如 QHP_NAMESPACE、QHG_LOCATION、QHP_VIRTUAL_FOLDER。有关更多信息,请参阅本文。
从功能上讲,Qt 压缩帮助功能与 CHM 输出相当,额外优点是编译 QCH 文件不受 Windows 限制。
缺点是它需要为每个用户设置 Qt 4.5(或更高版本),或将 Qt Help Assistant 与文档一起分发,这很复杂,因为目前它不作为单独的软件包提供。
如果您使用 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。