バージョン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: これは、doxyrules.makeを含むシンプルなMakefileです。
DoxyDocs.pmに格納されているドキュメントを利用するには、Doxygenが提供するデフォルトのPerlモジュールベースのジェネレータのいずれか(現在、これにはPerlモジュールベースの
ジェネレータが含まれます。詳細は以下を参照)を使用するか、独自のカスタマイズされたジェネレータを作成できます。Perlに関する知識があればそれほど難しくなく、DoxygenにPerlモジュールバックエンドを含める主な目的です。これを行う方法の詳細については、以下を参照してください。
Perlモジュールベースの
ジェネレータは現在かなり実験的で不完全ですが、それでも役立つと感じるかもしれません。ファイルやクラス内の関数、typedef、変数に関するドキュメントを生成でき、
マクロを再定義することでかなりカスタマイズできます。ただし、これを行う方法に関するドキュメントはまだありません。
DoxyfileでPERLMOD_LATEXタグをYESに設定すると、出力ディレクトリのperlmod/サブディレクトリに追加のファイルが作成されます。これらのファイルには、それぞれpdflatexとlatexを使用して、Perlモジュール出力からPDFとDVI出力を生成するために必要なPerlスクリプトと
コードが含まれています。これらのファイルの使用を自動化するためのルールも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
これにより、ドキュメントがPDF形式で含まれるdoxylatex.pdfが生成されるはずです。
実行します
make dvi
これにより、ドキュメントがDVI形式で含まれるdoxylatex.dviが生成されるはずです。
Doxygenによって生成されるPerlモジュールドキュメントはDoxyDocs.pmに格納されます。これは非常にシンプルなPerlモジュールで、2つのステートメントのみを含みます。変数$doxydocsへの代入と、通常Perlモジュールを終了する慣例的な1;ステートメントです。
ドキュメントは変数$doxydocsに格納され、DoxyDocs.pmを使用するPerlスクリプトからアクセスできます。
$doxydocsには、文字列、ハッシュ、リストの3種類のノードからなるツリー状の構造が含まれています。
文字列: これらは通常のPerl文字列です。任意の長さで任意の文字を含めることができます。その意味はツリー内の場所によって異なります。このタイプのノードには子ノードがありません。
ハッシュ: これらは匿名Perlハッシュへの参照です。ハッシュは複数のフィールドを持つことができ、それぞれ異なるキーを持っています。ハッシュフィールドの値は文字列、ハッシュ、またはリストのいずれかであり、その意味はハッシュフィールドのキーとツリー内のハッシュの位置によって異なります。ハッシュフィールドの値はノードの子です。
リスト: これらは匿名Perlリストへの参照です。リストには未定義数の要素があり、それがノードの子です。各要素は同じ型(文字列、ハッシュ、またはリスト)を持ち、ツリー内のリストの位置によって同じ意味を持ちます。
ご覧のとおり、$doxydocsに含まれるドキュメントは、シンプルなPerlスクリプトで処理する上で特別な障害は提示しません。
ドキュメントツリーの各ノードのセマンティクスを考慮することなく、DoxyDocs.pmに含まれるドキュメントを処理することに興味があるかもしれません。この目的のために、DoxygenはDoxyModel.pmファイルを生成します。このファイルには、ドキュメントツリー内の各ノードの型と子を記述するデータ構造が含まれています。
このセクションの残りの部分はまだ記述されていませんが、その間にDoxygenによって生成されたPerlスクリプト(doxylatex.plやdoxytemplate-latex.plなど)を見て、DoxyModel.pmの使用方法を理解することができます。
これは、DoxyDocs.pmにおけるドキュメントツリーの構造の説明です。以下のリストの各項目はツリー内のノードを記述し、説明の形式は次のとおりです。
ここで
"key =>" の部分は、親ノードがハッシュの場合にのみ表示されます。"key" はこのノードのキーです。
"Name" はノードの一意の名前で、DoxyModel.pmで定義されています。
"(type)" はノードの型を表します。文字列ノードの場合は "string"、ハッシュノードの場合は "hash"、リストノードの場合は "list"、ドキュメントサブツリーの場合は "doc" です。ドキュメントサブツリーの構造はまだどこにも記述されていませんが、例えばdoxylatex.plを見て、それを処理する方法を理解できます。
ドキュメントツリー内の各ノードの意味は次のとおりです。