我想仅为具有Doxygen评论的代码生成文档。我已经通过Doxygen版本1.8.9.1创建了Doxyfile
并将其配置为仅输出XML并隐藏所有未记录的代码:
GENERATE_HTML = NO
GENERATE_LATEX = NO
GENERATE_XML = YES
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
之后我创建了一个简单的C头test.h
,其中包含一个记录的文档和一个未记录的函数声明:
void foo(int a);
/**
* "bar" function description
* @param b sample param
*/
void bar(int b);
执行doxygen
我希望只有bar
的文档才能包含在生成的XML中。不幸的是,生成了两个函数的文档。是否可以仅为具有Doxygen注释的代码生成文档?或者,无论设置如何,Doxygen都会包含XML输出中的所有内容吗?
答案 0 :(得分:2)
在进一步阅读之前,请确保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);
注意,在他们的文档中你必须设置一个PREDEFINED宏,但至少在我的doxygen版本中,这不是必需的。他们的文档指定这样做Microsoft's documentation.
#ifndef DOXYGEN_SHOULD_SKIP_THIS
/* code that must be skipped by Doxygen */
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
应隐藏和放置的块周围:
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
在配置文件中,只要
,doxygen就会跳过所有块ENABLE_PREPROCESSING = YES
还有其他方法,但它们带有其他限制,即确保您的公开文档中不会出现静态方法,您可以将EXTRACT_STATIC
设置为NO
。
答案 1 :(得分:1)
您可以使用\cond
隐藏Doxygen的部分源代码。这样可以避免像Harry's answer中那样使用预处理器。
例如,Doxygen将看不到foo
,因此没有记录在案:
/** \cond */
void foo(int a);
/** \endcond */
/**
* "bar" function description
* @param b sample param
*/
void bar(int b);
此外,可以在\cond
中添加节标签,并可以通过在ENABLED_SECTIONS
配置选项中列出它们来控制要包括的节。
例如:
/// \cond CLASS_A
/// This function foos `a`.
void foo(int a);
/// \endcond
/// \cond CLASS_B
/// This function bars `b`.
void bar(int b);
/// \endcond
通过设置ENABLED_SECTIONS = CLASS_A CLASS_B
,这两个功能将显示在文档中。省略其中一个标签将隐藏相应的功能。