我想仅为具有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输出中的所有内容而不管设置如何?
在进一步阅读之前,请确保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_STATIC中NO。