次のようにコメントブロック内で\mainpageコマンドを使用する必要があります。
/*! \mainpage My Personal Index Page * * \section intro_sec Introduction * * This is the introduction. * * \section install_sec Installation * * \subsection step1 Step 1: Opening the box * * etc... */
以下を確認してください。
YES
に設定されていない限り、ソースから抽出されません。YES
に設定する必要があります。クラスに関数マクロがあり、セミコロンで終わっていませんか(例:MY_MACRO())?もしそうなら、Doxygenのプリプロセッサにそれを削除するよう指示する必要があります。
これは通常、設定ファイルで以下の設定を行うことになります。
ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES PREDEFINED = MY_MACRO()=
詳細については、マニュアルのプリプロセッシングのセクションをお読みください。
グローバル関数、変数、列挙型、typedef、およびdefineをドキュメント化するには、これらのコマンドが配置されているファイルを、\file(または@file)コマンドを含むコメントブロックを使用してドキュメント化する必要があります。
あるいは、\ingroupコマンドを使用してすべてのメンバーをグループ(またはトピック)に入れ、その後\defgroupコマンドを含むコメントブロックを使用してグループをドキュメント化することもできます。
メンバー関数や名前空間の一部である関数については、クラスまたは名前空間のいずれかをドキュメント化する必要があります。
Doxygenは、入力として指定されたファイル(INPUTタグ経由)と、指定された拡張子(FILE_PATTERNSに記載)に一致するファイルのみをパースします。ファイルのリストは、EXCLUDEとしてリストされたファイルや、EXCLUDE_PATTERNSで設定されたパターンに一致するファイルを除外することで絞り込まれます。
以前のDoxygenは、未知の拡張子を持つすべてのファイルをCファイルとしてパースしており、望ましくない結果を招く可能性がありました。バージョン1.8.8以降、Doxygenは特定のファイル拡張子に対してどのパーサーを使用するかを指定するマッピングを要求します。このマッピングはEXTENSION_MAPPINGタグを使用して指定します。マッピングが指定されていない場合、ファイルの内容は無視されます。
新しい最も簡単な方法は、無視すべきコードの先頭に\condコマンドを含むコメントブロックを、末尾に\endcondコマンドを含むコメントブロックを追加することです。これはもちろん同じファイル内にある必要があります。
しかし、Doxygenのプリプロセッサを使用することもできます。次のように記述した場合:
#ifndef DOXYGEN_SHOULD_SKIP_THIS /* code that must be skipped by Doxygen */ #endif /* DOXYGEN_SHOULD_SKIP_THIS */
非表示にしたいブロックの周囲に配置し、
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
設定ファイルに記述すると、ENABLE_PREPROCESSINGがYESに設定されている限り、Doxygenはすべてのブロックをスキップします。
ほとんどの場合、パスのユーザー定義部分を削除するためにSTRIP_FROM_INC_PATHを使用できます。
クラスを次のようにドキュメント化することもできます。
/*! \class MyClassName include.h path/include.h * * Docs for MyClassName */
Doxygenに次のように出力させるには:
#include <path/include.h>
MyClassNameの定義が含まれている実際のヘッダーファイルの名前に関係なく、MyClassNameクラスのドキュメントに上記の内容を記述します。
Doxygenにインクルードファイルが山括弧ではなく引用符を使用してインクルードされるべきであることを示したい場合は、次のように入力します。
/*! \class MyClassName myhdr.h "path/myhdr.h" * * Docs for MyClassName */
圧縮HTMLファイルa.chm
から別の圧縮HTMLファイルb.chm
を参照したい場合、a.chm
内のリンクは次の形式である必要があります。
<a href="mk:@MSITStore:b.chm::/file.html">
残念ながら、これは両方の圧縮HTMLファイルが同じディレクトリにある場合にのみ機能します。
結果として、生成されたすべてのプロジェクトのindex.chm
ファイルを一意の名前に変更し、すべての.chm
ファイルを1つのディレクトリに配置する必要があります。
タグファイルb.tag
を使用してプロジェクトbを参照するプロジェクトaがあるとします。その場合、プロジェクトaのindex.chm
をa.chm
に、プロジェクトbのindex.chm
をb.chm
に名前変更できます。プロジェクトaの設定ファイルには次のように記述します。
TAGFILES = b.tag=mk:@MSITStore:b.chm::
DISABLE_INDEXをYESに設定することで、インデックスを無効にできます。その後、独自のヘッダーファイルを作成し、それをHTML_HEADERに指定することで、独自のヘッダーを含めることができます。
Doxygenが生成するスタイルシートdoxygen.css
を含めるのを忘れている可能性があります。これを組み込むには、次のように記述します。
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
HTMLページのHEADセクションに。
以前(バージョン1.9.2より前)、DoxygenはさまざまなユーティリティクラスにQt 2.xの一部を使用していました。これらはその間にSTLコンテナクラスに置き換えられました。
Doxywizardと呼ばれるGUIフロントエンドは、最新バージョンのQtに基づいています。Doxygen自体はGUIなしでも使用できます。
設定ファイルに次のような除外パターンを記述するだけです。
EXCLUDE_PATTERNS = */test/*
クラス名の前に`%`を付けます。例:%MyClass。するとDoxygenは`%`を削除し、その単語をリンクなしで保持します。
いいえ、そのままでは使えません。Doxygenは読み取るものの構造を理解する必要があります。もし時間をかけることをいとわないのであれば、いくつかの選択肢があります。
src/scanner.l
を少し調整して言語がサポートされるようにするのはおそらくそれほど難しくありません。これはDoxygenが直接サポートする他のすべての言語(Java、IDL、C#、PHPなど)で行われています。src/scanner.l
(およびタグファイルを読み込む際のsrc/tagreader.cpp
)と同様の構文ツリーを生成するバックエンドを作成することもできます。このエラーは、Doxygenの字句スキャナーが一度に256KBを超える入力文字に一致するルールを持っている場合に発生します。私はこれを非常に大きな生成ファイル(256KBを超える行数)で見たことがあり、そのファイルでは組み込みのプリプロセッサが空のファイル(256KBを超える改行を含む)に変換していました。他に発生する可能性があるケースとして、コードに256KBを超える文字を含む行がある場合が挙げられます。
このようなケースに遭遇し、修正を希望される場合は、このメッセージをトリガーするコード断片をお送りください。この問題を回避するには、ファイルに改行をいくつか入れるか、より小さな部分に分割するか、またはEXCLUDEを使用して入力から除外してください。
この問題を回避するもう1つの方法は、cmakeコマンドを次のオプションと共に使用することです。
ここで<size>は、入力(YY_BUF_SIZE)および読み取り(YY_READ_BUF_SIZE)バッファの新しいサイズです。このオプションが指定されていない場合、デフォルト値の262144(つまり256KB)が使用されます。
texmf.cfgファイルを編集して、様々なバッファのデフォルト値を増やし、その後「texconfig init」を実行してください。
BUILTIN_STL_SUPPORTオプションがオンになっていない限り、DoxygenはSTLクラスを認識しません。
どこを調べるべきかについては、こちらをお読みください。
コマンドラインオプション経由ではありませんが、Doxygenはstdin
から読み取ることができるため、パイプで渡すことができます。設定ファイルのオプションをコマンドラインから上書きする方法の例を以下に示します(UNIXライクな環境を想定)。
( cat Doxyfile ; echo "PROJECT_NUMBER=1.0" ) | doxygen -
Windowsコマンドラインでは、次のコマンドで同じことができます。
( type Doxyfile & echo PROJECT_NUMBER=1.0 ) | doxygen.exe -
Windows Powershell(バージョン5.1で確認済み)では、次のコマンドで同じことができます。
&{ type Doxyfile ; echo "PROJECT_NUMBER=1.0" } | doxygen -
同じ名前の複数のオプションが指定された場合、Doxygenは最後のものを使用します。既存のオプションに追加するには、`+=`演算子を使用できます。
Doxygenは「documentation」(ドキュメンテーション)と「generator」(ジェネレーター)という言葉を組み合わせて名付けられました。
documentation -> docs -> dox generator -> gen
当時、lex
とyacc
について調べていたのですが、多くのものが「yy」で始まるため、「y」が入り込み、発音しやすくなりました(正しい発音はDocs-ee-genで、長い「e」の音です)。
私はかつてQtライブラリに基づいたGUIウィジェットを作成しました(現在もhttps://sourceforge.net/projects/qdbttabular/で入手可能ですが、2002年以降更新されていません)。Qtは内部ツールを使用してうまくドキュメントを生成しており(彼らは公開したがらなかった)、私も同様のドキュメントを手動で作成していました。これは維持管理の悪夢だったので、同様のツールを求めました。Doc++も検討しましたが、十分ではありませんでした(シグナルとスロットをサポートしておらず、私が好きになったQtのルック&フィールがありませんでした)。そこで、自分自身のツールを書き始めました…
Doxygenのすべてのコンソール出力、つまりメッセージや警告をリダイレクトすると、出力がインターリーブされたり、予期しない順序になったりする可能性があります。その技術的な理由は、stdoutがバッファリングされるためです。これはDoxygenの-bオプションを使用することで回避できます(例:doxygen -b > out.txt 2>&1)。ただし、これにはわずかに余分な時間がかかる場合があります。