2011-02-25 39 views
0

我有一個名爲macros.h文件中定義的多行宏。在我的doxy文件中,我有如何讓Doxygen從包含文件擴展宏?

ENABLE_PREPROCESSING = YES 
MACRO_EXPANSION  = YES 
EXPAND_ONLY_PREDEF  = NO 
PREDEFINED    = 
EXPAND_AS_DEFINED  = 
SKIP_FUNCTION_MACROS = NO 

但Doxygen仍然不會擴展包含macros.h的任何源文件中的宏。我跑「的doxygen -d預處理器的Doxyfile」看到預處理器的輸出,並輸出像消息:

#include macros.h: not found or already included! skipping... 
+0

此問題已在Doxygen 1.7.4中修復。 – 2011-06-07 22:34:05

回答

3

你已經告訴你的編譯器有關include路徑,但你還沒有告訴doxygen的。所以它試圖打開「macros.h」並得到文件未找到的錯誤。

您需要在Doxyfile中正確設置INCLUDE_PATH

+0

事實上,macros.h存在於我的源代碼樹的子目錄中,但在我的doxyfile中,INPUT標記被設置爲我的源代碼樹的基本目錄。 – 2011-02-25 19:01:05

+0

@ Phineas:在什麼目錄下是「macros.h」相對於'#include's的文件呢? – 2011-02-25 19:02:00

+0

macros.h位於src/python中,包含文件Wrapper.h位於src/extensions中。 – 2011-02-25 19:04:58

0

@Ben:你真的得到了INCLUDE_PATH嗎?

我理解這個理論。我已經按照解釋(以絕對和相對形式)設置了INCLUDE_PATH,但無濟於事。我已將INCLUDE_FILE_PATTERNS設置爲* .h。儘管如此,在處理我的.cpp文件時,Doxygen發現INPUT目錄中的所有標題,但是無法在我的lib /子目錄中找到任何標題。

我發現的唯一的解決方案是:

1)創建輸入目錄內的符號鏈接在其LIB /子目錄的每個報頭中。這是醜陋的和不可統一的。

2)將RECURSIVE標籤設置爲YES。這是不可取的,因爲現在將整個內容INPUT的tests /子目錄添加到生成的文檔中。

我傾向於認爲INCLUDE_PATH功能簡單地被破壞(至少在我運行的版本1.7.1中)。