2010-03-01 91 views
18

是否有可能在Doxygen中定义预处理器定义?我希望能够像变量或函数那样做,但是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和内群体)中,而不是仅仅在“文件范围”,然而这也没有效果(尽管组中的其他项目按预期记录)。

我查看了各种Doxygen选项,但看不到任何会启用(或阻止)定义文档的内容。

回答

25

是的,这是可能的。该Doxygen documentation说:

为了证明全局对象(函数,类型定义,枚举,宏等), 你必须证明它们所定义的文件。换句话说, 那里至少必须在该文件中的

/*! \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文档出现在测试。h。在HTML输出文件选项卡下项和TEST_AAA等定义在下的模块测试集团出现带班Foo和功能Bar选项卡在一起。

有一点需要注意的是,如果你把文件名之后@file命令,e.g:

/** @file Test.h */ 

那么这必须在文件的实际名称相匹配。如果没有,则不会生成文件中项目的文档。

如果您不想添加@file命令,另一种解决方案是在Doxyfile中设置EXTRACT_ALL = YES

我希望这有助于!

+0

这是否意味着无法将它们放入组/模块中?多数民众赞成我真的想要做的,以便他们与他们相关的功能/类/等(其中也传播了几个文件)。 – 2010-03-01 15:53:07

+0

嗨火Lancer,我已经添加了一些关于分组到我的答案的细节 – ChrisN 2010-03-01 17:23:34

+0

好的,我得到它在一个addtogroup或defgroup块中工作。 ingroup似乎在某处放弃了定义(defgroup与组主文档在一个.cpp文件中,除了头文件中定义的内容以外,其他所有内容都已放入组中)......我猜测这肯定是某种错误在Doxygens部分? – 2010-03-02 07:49:40

2

尝试设置EXTRACT_ALL选项,我已经在我的项目中设置了它,并生成#defines的文档。有可能是做这件事,而无需使用EXTRACT_ALL的更优雅的方式,所以一定要查看文档

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

3

在我的“C”的文件,我用的注释格式的#define行是这样的:

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

我的HTML文档就结束了含文档我指定。 (我在文件顶部有@file,EXTRACT_ALL = YES)

0

除了以前的答案之外,还需要在Doxyfile上有ENABLE_PREPROCESSING=YES