バージョン1.2.18以降、Doxygenは「Perlモジュール出力形式」と呼ばれる新しい出力形式を生成できるようになりました。これは、Doxygenのソースコードを修正することなく、新しいカスタマイズされた出力を生成するために使用できる中間形式として設計されています。したがって、その目的はDoxygenによって生成できるXML出力形式と似ています。XML出力形式の方がより標準的ですが、Perlモジュール出力形式の方がおそらくよりシンプルで使いやすいでしょう。
Perlモジュール出力形式は現時点ではまだ実験的であり、将来のバージョンで非互換な方法で変更される可能性がありますが、その可能性は低いと思われます。また、他のDoxygenバックエンドの一部の機能が欠けています。しかし、Perlモジュールベースのジェネレータによって示されているように、すでに有用な出力を生成するために使用できます。
PerlモジュールバックエンドまたはPerlモジュールベースのジェネレータで見つかったバグや問題をDoxygen issue trackerに報告してください。提案も歓迎します(バグ報告の方法も参照してください)。
GENERATE_PERLMODタグがDoxyfile
で有効になっている場合、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、および変数のドキュメントを生成でき、
マクロを再定義することで大幅にカスタマイズできます。ただし、これを行う方法に関するドキュメントはまだありません。
PERLMOD_LATEXタグをDoxyfile
で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
GENERATE_PERLMODタグとPERLMOD_LATEXタグの両方をDoxyfile
でYES
に設定します。
Doxyfile
でDoxygenを実行します
doxygen Doxyfile
perlmod/
サブディレクトリが出力ディレクトリに表示されているはずです。perlmod/
サブディレクトリに入り、次を実行します。
make pdf
これにより、PDF形式のドキュメントを含むdoxylatex.pdf
が生成されます。
実行
make dvi
これにより、DVI形式のドキュメントを含むdoxylatex.dvi
が生成されます。
Doxygenによって生成されたPerlモジュールドキュメントは、DoxyDocs.pm
に格納されます。これは、変数$doxydocs
への代入と、通常Perlモジュールの最後に記述される慣例的な1;
ステートメントの2つのステートメントのみを含む非常にシンプルなPerlモジュールです。
ドキュメントは変数$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」はこのノードのキーです。
「名前」は、DoxyModel.pmで定義されたノードの一意の名前です。
「(タイプ)」は、ノードのタイプです。文字列ノードの場合は「string」、ハッシュノードの場合は「hash」、リストノードの場合は「list」、ドキュメントサブツリーの場合は「doc」です。ドキュメントサブツリーの構造はまだどこにも記述されていませんが、たとえば、doxylatex.plを見て、それを処理する方法を確認できます。
ドキュメントツリー内の各ノードの意味は次のとおりです。