2011-02-25 45 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中)。