2016-12-17 21 views
4

我有一個項目,我有大量的條件定義可以使跨平臺開發變得更容易。不過,我有問題讓Doxygen提取所有的定義,因爲它只會挑選那些只發生評估的定義。Doxygen Document全部有條件定義

例如在下面的代碼片段中,Doxygen將記錄TARGET_X86_64,但不是TARGET_ARM64

#if defined(_M_ARM64) || defined(__arm64__) || defined(__aarch64__) 
/** Build target is ARM64 if defined. */ 
#define TARGET_ARM64 
#else 
/** Build target is x86_64 if defined. */ 
#define TARGET_X86_64 
#endif 

啓用EXTRACT_ALL並沒有幫助,並且禁用預處理會導致Doxygen根本不記錄任何內容。如何獲得doxygen以提取這兩種情況下的文檔?

回答

0

我做了一個「解決方案」,這是一個冗長的工作。當您想要使用#elseif語句而不是僅使用純粹的#if語句時,它不那麼尷尬。儘管兩者都有效。

首先,定義一切,不關心條件邏輯。

/** Some define */ 
#define TARGET_DEFINE 

/** Some other define */ 
#define OTHER_TARGET_DEFINE 

其次,採用最初用於創建定義的條件邏輯並將其轉換爲無定義邏輯。

#if !(ORIGINAL_LOGIC) 
#undef TARGET_DEFINE 
#endif 

最後,更改條件邏輯,以便在doxygen進行預處理時沒有任何不確定因素。

#if !defined(DOXYGEN) 
...