Doxygen分组exp为何包含showInt?如何排除分组外无关函数?
Doxygen分组包含无关函数的原因及解决办法
原因
在Doxygen 1.8.17版本中,存在默认的自动归类行为:当代码中存在已定义的分组(比如你创建的exp组),且未给其他函数(如showInt())指定任何分组归属或隐藏标记时,Doxygen会自动将这些未分组的公开实体归入第一个已定义的分组中,最终导致无关函数出现在exp模块文档里。
解决办法
方法1:给无关函数添加隐藏标记
给不需要公开的函数添加\internal注释,标记为内部使用,这样Doxygen就不会将其纳入公开的模块文档:
/** * \internal * \brief 内部打印整数的函数 */ void showInt(int value) { std::cout << "value=" << value; }
如果希望完全隐藏该函数(连内部文档都不生成),也可以使用\private标记,同时确保Doxyfile中EXTRACT_PRIVATE = NO(默认即为NO)。
方法2:配置Doxyfile隐藏未注释成员
修改Doxyfile,启用HIDE_UNDOC_MEMBERS选项,让Doxygen自动忽略所有没有编写Doxygen注释的函数:
HIDE_UNDOC_MEMBERS = YES
这种方式适合批量处理无注释的内部函数,无需逐个添加标记。
方法3:创建内部分组归类无关函数
专门定义一个内部分组,将不需要公开的函数归入其中,同时标记该组为内部:
/** * \defgroup internal 内部工具函数 * \internal * \brief 仅内部使用的函数集合 */ /** * \ingroup internal */ void showInt(int value) { std::cout << "value=" << value; }
这样showInt()会被归入内部分组,不会出现在公开的exp组文档中。
方法4:关闭自动分组行为
修改Doxyfile,关闭自动嵌套和自动分组的相关配置:
AUTOGROUP_SUBDIRS = NO GROUP_NESTED_COMPOUNDS = NO
这可以避免Doxygen自动将未分组实体归入现有公开分组。
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

