2010-03-01 93 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