我在一个名为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...
答案 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版本中)。