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オプションを調べましたが、定義のドキュメントを有効にする(または妨げる)ものは何も見つかりませんでした。
はい、可能です。 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 GroupのModulesタブとクラスFoo
および関数Bar
。
注意すべきことの1つは、@file
コマンドの後にファイル名を置くと、次のようになるということです。
/** @file Test.h */
次に、これはファイルの実際の名前と一致する必要があります。含まれていない場合、ファイル内のアイテムのドキュメントは生成されません。
@file
コマンドを追加したくない場合の代替ソリューションは、DoxyfileにEXTRACT_ALL = YES
を設定することです。
これが役に立てば幸いです!
私の「C」ファイルでは、次のようにコメント形式と#define行を使用しています。
/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)
私のhtmlドキュメントには、指定したドキュメントが含まれています。 (ファイルの先頭に@fileがあり、EXTRACT_ALL = YESです)
EXTRACT_ALLオプションを設定してみてください。プロジェクトで設定し、#definesのドキュメントを生成します。 EXTRACT_ALLを使用せずにそれを行うよりエレガントな方法があるかもしれませんので、ドキュメントを確認してください
以前の回答に加えて、ENABLE_PREPROCESSING=YES
Doxyfile。