运行doxyrest生成rst时报duplicate member id警告,是什么原因导致的?
duplicate member id 错误来源
- Doxygen 对嵌套
\addtogroup的处理逻辑是,子组内的成员会同时归属到父组与子组下,Doxygen本身允许成员属于多个分组,因此生成XML时不会触发警告,只会在两个分组的成员列表中都写入同一个函数的引用条目。 - Doxyrest 处理XML生成rst时,默认会为每一个扫描到的成员生成全局唯一的id标记,同一个函数被父组、子组分别扫描到时,就会尝试重复生成同一个id,进而触发重复id的警告。
可行解决方法
- 修改
doxyrest-config.lua配置,开启EXCLUDE_MEMBER_FROM_PARENT_GROUPS = true,配置生效后子组内的成员不会再被父组重复扫描,从根源避免重复id生成,是最推荐的处理方案。 - 若业务需要成员同时在父子组的文档中展示,可在配置中开启
FORCE_SUFFIX_DUPLICATE_MEMBERS = true,Doxyrest会自动为重复的id添加序号后缀区分,不会发生冲突。 - 也可以调整代码注释的分组写法,放弃嵌套
\addtogroup的隐式分组逻辑,改为对每个函数显式标注\ingroup指定所属分组,避免成员被多组同时关联。
内容的提问来源于stack exchange,提问作者Mario Mateaș
相关产品推荐
相关产品推荐

