我正在使用 doxygen 为我们的 C++ API 生成 html 帮助。
有些部分在代码中启用/禁用,例如
#ifdef EXPERIMENTAL_FEATURE1
class Experimental1
{
...
}
#endif
#ifdef EXPERIMENTAL_FEATURE2
class Experimental2
{
...
}
#endif
我将我的 doxygen PREDEFINED 设置如下:
预定义 = EXPERIMENTAL_FEATURE1 EXPERIMENTAL_FEATURE2
然而,这不会导致 doxygen 提取 doc。对于这些类(class)。日志显示 doxygen 读取文件。
PREDEFINED 的语法是否正确(以空格分隔且不带 =)?
我该如何调试?
最佳答案
查看 doxygen 手册:
http://www.doxygen.nl/manual/preprocessing.html
典型的语法是:
PREDEFINED = "name1=value1" \
"name2=value2" \
"name3=value3"
更详细的手册说:
The argument of the tag is a list of macros of the form: name or name=definition (no spaces). If the definition and the "=" are omitted, "=1" is assumed. To prevent a macro definition from being undefined via #undef or recursively expanded use the := operator instead of the = operator.
如果你没有值(value),你可以简单地写下“名字”——所以你的例子应该可以工作。
确保您的 doxyfile 中的以下设置正确:
HIDE_UNDOC_CLASSES=NO
EXTRACT_ALL=YES
EXTRACT_LOCAL_CLASSES=YES
否则类不会放入文档中。
还要确保 ENABLE_PREPROCESSING 设置为 YES。
如果所有这些都没有帮助,请发布一个重现问题的最小示例。
关于Doxygen 不读取用宏保护的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173452/