次のようなコメントブロック内で\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コマンドを含むコメントブロックを1つ、末尾に\endcondコマンドを含むコメントブロックを1つ追加することです。もちろん、これは同じファイル内に記述する必要があります。
しかし、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つのディレクトリに配置する必要があります。
プロジェクト *a* がタグファイル b.tag を使用してプロジェクト *b* を参照していると仮定すると、プロジェクト *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の字句スキャナーが一度に256Kを超える入力文字に一致するルールを持っている場合に発生します。非常に大きな生成ファイル(>256K行)で、組み込みのプリプロセッサがそれを空のファイル(256Kを超える改行を含む)に変換した場合にこれが起こるのを見たことがあります。これが起こりうるもう1つのケースは、コードに256Kを超える文字を含む行がある場合です。
このようなケースに遭遇し、私に修正してほしい場合は、メッセージをトリガーするコードフラグメントを送ってください。問題を回避するには、ファイルに改行を追加するか、より小さな部分に分割するか、EXCLUDEを使用して入力から除外します。
この問題を回避するもう1つの方法は、次のオプションを指定してcmakeコマンドを使用することです。
ここで、<size> は入力 (YY_BUF_SIZE) および読み取り (YY_READ_BUF_SIZE) バッファの新しいサイズです。このオプションが指定されていない場合、デフォルト値の262144 (つまり256K) が使用されます。
texmf.cfgファイルを編集して、各種バッファのデフォルト値を増やし、「texconfig init」を実行します。
Doxygenは、BUILTIN_STL_SUPPORT オプションがオンになっていない限り、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。ただし、これには少し時間がかかる場合があります。