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

问题描述 投票:0回答:2

我在一个名为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...
c++ doxygen
2个回答
3
投票

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

您需要在Doxyfile中正确设置INCLUDE_PATH


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版本中)。

© www.soinside.com 2019 - 2024. All rights reserved.