自 1.2.18 版本起,Doxygen 可以產生一種新的輸出格式,我們稱之為「Perl 模組輸出格式」。它被設計為一種中間格式,可用於產生新的和自訂的輸出,而無需修改 Doxygen 原始碼。因此,它的用途與 Doxygen 也可以產生的 XML 輸出格式類似。XML 輸出格式更加標準,但 Perl 模組輸出格式可能更簡單且更易於使用。
Perl 模組輸出格式目前仍處於實驗階段,未來版本可能會以不相容的方式進行更改,儘管這種可能性應該不高。它也缺少其他 Doxygen 後端的一些功能。然而,它已經可以用來產生有用的輸出,如基於 Perl 模組的 產生器所示。
請將您在 Perl 模組後端或基於 Perl 模組的 產生器中發現的任何錯誤或問題回報至 Doxygen 問題追蹤器。也歡迎提出建議(另請參閱:如何回報錯誤)。
當 Doxyfile
中的 GENERATE_PERLMOD 標籤啟用時,執行 Doxygen 會在您輸出目錄的 perlmod/
子目錄中產生一些檔案。這些檔案如下:
DoxyDocs.pm
:這是實際包含文件內容的 Perl 模組,格式如下文所述的 Perl 模組格式。
DoxyModel.pm
:此 Perl 模組描述了 DoxyDocs.pm
的結構,與實際的文件內容無關。詳情請參閱下文。
doxyrules.make
:此檔案包含建立和清除從 Doxyfile
產生的檔案的 make 規則。還包含這些檔案的路徑和其他相關資訊。此檔案旨在由您自己的 Makefile 包含。
Makefile
:這是一個簡單的 Makefile,包含 doxyrules.make
。
若要使用儲存在 DoxyDocs.pm
中的文件內容,您可以使用 Doxygen 提供的預設基於 Perl 模組的產生器之一(目前包括基於 Perl 模組的 產生器,請參閱下文),或編寫您自己的自訂產生器。如果您具備一些 Perl 知識,這應該不會太難,而這也是在 Doxygen 中包含 Perl 模組後端的主要目的。有關如何執行此操作的詳細資訊,請參閱下文。
基於 Perl 模組的 產生器目前相當實驗性且不完整,但您可能會發現它仍然很有用。它可以為檔案和類別中的函式、typedef 和變數產生文件,並且可以透過重新定義
巨集進行大量自訂。但是,目前尚未有關於如何執行此操作的文件。
將 Doxyfile
中的 PERLMOD_LATEX 標籤設定為 YES
,即可在您輸出目錄的 perlmod/
子目錄中建立一些額外的檔案。這些檔案包含從 Perl 模組輸出產生 PDF 和 DVI 輸出的必要 Perl 腳本和 程式碼,分別使用
pdflatex
和 latex
。用於自動化使用這些檔案的規則也會加入至 doxyrules.make
和 Makefile
。
額外產生的檔案如下:
doxylatex.pl
:此 Perl 腳本使用 DoxyDocs.pm
和 DoxyModel.pm
產生 doxydocs.tex
,這是一個 檔案,其中包含的文件格式可以由
程式碼存取。此檔案無法直接 LaTeX 編譯。
doxyformat.tex
:此檔案包含 程式碼,用於將 doxydocs.tex 中的文件轉換為適合
編譯並呈現給使用者的
文字。
doxylatex-template.pl
:此 Perl 腳本使用 DoxyModel.pm
產生 doxytemplate.tex
,這是一個 檔案,定義了一些巨集的預設值。
doxytemplate.tex
由 doxyformat.tex 包含,以避免需要明確定義某些巨集。
doxylatex.tex
:這是一個非常簡單的 文件,會載入一些套件並包含
doxyformat.tex
和 doxydocs.tex
。此文件會經由加入至 doxyrules.make
的規則進行 編譯,以產生 PDF 和 DVI 文件。
若要嘗試此操作,您需要安裝 latex
、pdflatex
和 doxylatex.tex
使用的套件。
使用下列程式碼將您的 Doxyfile
更新至最新版本:
doxygen -u Doxyfile
將您 Doxyfile
中的 GENERATE_PERLMOD 和 PERLMOD_LATEX 標籤都設定為 YES
。
在您的 Doxyfile
上執行 Doxygen。
doxygen Doxyfile
您的輸出目錄中應該會出現一個 perlmod/
子目錄。進入 perlmod/
子目錄並執行:
make pdf
這應該會產生一個 doxylatex.pdf
,其中包含 PDF 格式的文件。
執行:
make dvi
這應該會產生一個 doxylatex.dvi
,其中包含 DVI 格式的文件。
Doxygen 產生的 Perl 模組文件會儲存在 DoxyDocs.pm
中。這是一個非常簡單的 Perl 模組,只包含兩個語句:將值指派給變數 $doxydocs
,以及通常結束 Perl 模組的慣例 1;
語句。
文件會儲存在變數 $doxydocs
中,然後 Perl 腳本可以使用 DoxyDocs.pm
存取該變數。
$doxydocs
包含一個由三種類型的節點組成的樹狀結構:字串、雜湊和清單。
字串
:這些是一般的 Perl 字串。它們可以是任何長度,並且可以包含任何字元。它們的語意取決於它們在樹中的位置。此類型的節點沒有子節點。
雜湊
:這些是對匿名 Perl 雜湊的參照。雜湊可以有多個欄位,每個欄位都有不同的索引鍵。雜湊欄位的值可以是字串、雜湊或清單,其語意取決於雜湊欄位的索引鍵以及雜湊在樹中的位置。雜湊欄位的值是節點的子節點。
清單
:這些是對匿名 Perl 清單的參照。清單具有未定義的元素數量,這些元素是節點的子節點。每個元素的類型(字串、雜湊或清單)和語意都相同,具體取決於清單在樹中的位置。
如您所見,$doxydocs
中包含的文件在由簡單的 Perl 腳本處理時,沒有任何特殊障礙。
您可能會有興趣處理 DoxyDocs.pm
中包含的文件,而無需考慮文件樹中每個節點的語意。為此,Doxygen 會產生一個 DoxyModel.pm
檔案,其中包含描述文件樹中每個節點類型和子節點的資料結構。
本節的其餘部分尚未撰寫完成,但在此期間,您可以查看 Doxygen 產生的 Perl 腳本(例如 doxylatex.pl
或 doxytemplate-latex.pl
),以了解如何使用 DoxyModel.pm
。
以下說明 DoxyDocs.pm 中文件樹的結構。以下清單中的每個項目都描述了樹中的一個節點,描述格式如下:
其中
只有在父節點是雜湊時,才會顯示「索引鍵 =>」部分。「索引鍵」是此節點的索引鍵。
「名稱」是節點的唯一名稱,在 DoxyModel.pm 中定義。
「(類型)」是節點的類型:「string」代表字串節點、「hash」代表雜湊節點、「list」代表清單節點,而「doc」代表文件子樹。文件子樹的結構尚未在任何地方描述,但您可以查看例如 doxylatex.pl,以了解如何處理它。
文件樹中每個節點的含義如下: