是否可以在Doxygen中记录预处理器定义?我希望能够像变量或函数那样做,但Doxygen输出似乎“丢失”了定义的文档,并且也不包含定义本身。
我尝试了以下
/**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选项,但看不到任何可以启用(或阻止)文档定义的内容。
答案 0 :(得分:29)
是的,有可能。 Doxygen documentation说:
要记录全局对象(函数,typedef,枚举,宏等), 您必须记录定义它们的文件。换一种说法, 必须至少有一个
/*! \file */
或
/** @file */
此文件中的行。
您可以使用@defgroup
,@addtogroup
和@ingroup
将相关项目放入同一模块,即使它们出现在单独的文件中(有关详细信息,请参阅文档here )。这是一个适合我的最小例子(使用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
文档会显示在HTML输出中文件标签下的 Test.h 条目中,{{1} }等定义出现在模块标签中的测试组下,同时还有类TEST_AAA
和函数Foo
。
需要注意的一点是,如果您将文件名放在Bar
命令之后,例如:
@file
然后这必须匹配文件的实际名称。如果没有,则不会生成文件中项目的文档。
如果您不想添加/** @file Test.h */
命令,另一种解决方案是在Doxyfile中设置@file
。
我希望这有帮助!
答案 1 :(得分:4)
在我的“C”文件中,我使用注释格式和#define这样的行:
/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)
我的html文档最终包含我指定的文档。 (我的文件顶部有@file,EXTRACT_ALL = YES)
答案 2 :(得分:3)
尝试设置EXTRACT_ALL选项,我在项目中设置了它,并为#defines生成文档。在不使用EXTRACT_ALL的情况下,可能有一种更优雅的方式,所以请务必查看文档
答案 3 :(得分:2)
添加到以前的答案,还需要在Doxyfile上有{{1}}。