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 輸出相當,另外的優點是不限於 Windows 才能編譯 QCH 檔案。
缺點是它需要為每個使用者設定 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。