web-dev-qa-db-ja.com

Doxygenでのプリプロセッサ定義の文書化

Doxygenでプリプロセッサ定義を文書化することは可能ですか?変数や関数と同じように実行できると思っていましたが、Doxygenの出力では、定義のドキュメントが「失われた」ように見え、define自体も含まれていません。

私は以下を試しました

/**My Preprocessor Macro.*/
#define TEST_DEFINE(x) (x*x)

そして

/**@def TEST_DEFINE

   My Preprocessor Macro.
*/
#define TEST_DEFINE(x) (x*x)

また、「ファイルスコープ」だけでなく、グループ内(defgroup、addtogroup、ingroupを試してみました)に配置しようとしましたが、効果もありませんでした(ただし、グループ内の他の項目は意図したとおりに文書化されていました)。

さまざまなDoxygenオプションを調べましたが、定義のドキュメントを有効にする(または妨げる)ものは何も見つかりませんでした。

25
Fire Lancer

はい、可能です。 Doxygenのドキュメント はこう言っています:

グローバルオブジェクト(関数、typedef、列挙、マクロなど)を文書化するには、それらが定義されているファイルを文書化する必要があります。言い換えれば、少なくとも

/*! \file */

または

/** @file */

このファイルの行。

@defgroup@addtogroup、および@ingroupを使用して、関連するアイテムを別々のファイルに表示する場合でも、同じモジュールに入れることができます(詳細については、ドキュメント こちら を参照してください) )。これは私のために働く最小限の例です(Doxygen 1.6.3を使用):

Doxyfile

# Empty file.

Test.h

/** @file */

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/**
 * @defgroup TEST_GROUP Test Group
 *
 * @{
 */

/** Test AAA documentation. */
#define TEST_AAA (1)
/** Test BBB documentation. */
#define TEST_BBB (2)
/** Test CCC documentation. */
#define TEST_CCC (3)
/** @} */

Foo.h

/** @file */

/**
 * @addtogroup TEST_GROUP
 *
 * @{
 */

/** @brief My Class. */     
class Foo {
    public:
        void method();
};

/** @} */

Bar.h

/** @file */

/**
 * @ingroup TEST_GROUP
 * My Function.
 */
void Bar();

この場合、TEST_DEFINEドキュメントはTest.hエントリのFilesHTML出力のタブ、およびTEST_AAAなどの定義は、Test GroupModulesタブとクラスFooおよび関数Bar

注意すべきことの1つは、@fileコマンドの後にファイル名を置くと、次のようになるということです。

/** @file Test.h */

次に、これはファイルの実際の名前と一致する必要があります。含まれていない場合、ファイル内のアイテムのドキュメントは生成されません。

@fileコマンドを追加したくない場合の代替ソリューションは、DoxyfileにEXTRACT_ALL = YESを設定することです。

これが役に立てば幸いです!

32
ChrisN

私の「C」ファイルでは、次のようにコメント形式と#define行を使用しています。

/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)

私のhtmlドキュメントには、指定したドキュメントが含まれています。 (ファイルの先頭に@fileがあり、EXTRACT_ALL = YESです)

4
Jim Chargin

EXTRACT_ALLオプションを設定してみてください。プロジェクトで設定し、#definesのドキュメントを生成します。 EXTRACT_ALLを使用せずにそれを行うよりエレガントな方法があるかもしれませんので、ドキュメントを確認してください

http://www.doxygen.nl/config.html#cfg_extract_all

3
Sam Post

以前の回答に加えて、ENABLE_PREPROCESSING=YES Doxyfile。

2
AmiguelS