Doxygen是否可以从生成的XML中排除未记录的函数?

gri*_*yvp 8 doxygen

我想仅为具有Doxygen注释的代码生成文档.我创建了一个Doxyfilevia Doxygen版本1.8.9.1并将其配置为仅输出XML并隐藏所有未记录的代码:

GENERATE_HTML          = NO
GENERATE_LATEX         = NO
GENERATE_XML           = YES
HIDE_UNDOC_MEMBERS     = YES
HIDE_UNDOC_CLASSES     = YES
Run Code Online (Sandbox Code Playgroud)

之后我创建了一个简单的C头test.h文件,其中包含一个文档和一个未记录的函数声明:

void foo(int a);

/**
 * "bar" function description
 * @param b sample param
 */
void bar(int b);
Run Code Online (Sandbox Code Playgroud)

通过执行doxygen我期望的文档仅bar包含在生成的XML中.不幸的是,生成了两个函数的文档.是否可以仅为具有Doxygen注释的代码生成文档?或者Doxygen总是包含XML输出中的所有内容而不管设置如何?

Har*_*rry 4

在进一步阅读之前,请确保EXTRACT_ALL已设置为NO

我不喜欢以下解决方案,但它确实有效。使用 doxygen 的预处理器

#ifdef PROJECT_NO_DOC
void foo(int a); 
#endif /* PROJECT_NO_DOC */

/**
 *  * "bar" function description
 *   * @param b sample param
 *    */
void bar(int b); 
Run Code Online (Sandbox Code Playgroud)

请注意,在他们的文档中,您必须设置一个预定义的宏,但至少在我的 doxygen 版本中,这不是必需的。他们的文档指定以这种方式执行此操作,在配置中设置预定义的宏来为您执行此操作

#ifndef DOXYGEN_SHOULD_SKIP_THIS

 /* code that must be skipped by Doxygen */

#endif /* DOXYGEN_SHOULD_SKIP_THIS */
Run Code Online (Sandbox Code Playgroud)

围绕应该隐藏和放置的块:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
Run Code Online (Sandbox Code Playgroud)

在配置文件中,doxygen 应该跳过所有块,只要

ENABLE_PREPROCESSING = YES
Run Code Online (Sandbox Code Playgroud)

还有其他方法,但它们带有额外的约束,即确保没有静态方法出现在您可以设置的公共文档EXTRACT_STATICNO