如何让Doxygen从包含文件中扩展宏?

时间:2011-02-25 18:49:42

标签: c++ doxygen

我在一个名为macros.h的文件中定义了许多多行宏。在我的doxyfile中,我有

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

但Doxygen仍然不会扩展包含macros.h的任何源文件中的宏。我运行“doxygen -d Preprocessor doxyfile”来查看预处理器的输出,并输出如下消息:

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

2 个答案:

答案 0 :(得分:4)

你告诉你的编译器你的包含路径,但是你没有告诉doxygen。因此它尝试打开“macros.h”并获取文件未找到的错误。

您需要在Doxyfile中正确设置INCLUDE_PATH

答案 1 :(得分:1)

@Ben:你真的让INCLUDE_PATH工作了吗?

我理解这个理论。我按照解释设置了INCLUDE_PATH(绝对和相对形式),但无济于事。我已将INCLUDE_FILE_PATTERNS设置为* .h。尽管如此,在处理我的.cpp文件时,Doxygen会找到INPUT目录中的所有标题但却无法在我的lib /子目录中找到任何标题。

我找到的唯一解决方案是:

1)在INPUT目录中为其lib /子目录中的每个头创建一个符号链接。这是丑陋和不可简化的。

2)将RECURSIVE标签设置为YES。这是不可取的,因为现在整个内容INPUT的tests /子目录被添加到生成的文档中。

我倾向于认为INCLUDE_PATH功能被破坏了(至少在我正在运行的1.7.1版本中)。