Doxygen不同父组下创建同名子组内容合并问题求助
问题原因
Doxygen 中@defgroup定义的组ID是全局唯一标识,你多次定义同名的Constructors、Other组,本质上是在操作同一个全局组,因此两个父组引用时都会带出所有归到该全局组的内容。
解决方法
方法1:全局子组指定唯一ID+相同显示名
@defgroup支持传入第二个参数作为文档中显示的组名,你只需要保证组ID全局唯一,显示名可以完全相同,分组结构就会符合你的预期。
修改后的分组定义代码示例:
/** @defgroup Group1 Group 1 * Description for Group 1 */ /** @defgroup Group2 Group 2 * Description for Group 2 */ /** @defgroup Group1_Constructors Constructors * @ingroup Group1 */ /** @defgroup Group2_Constructors Constructors * @ingroup Group2 */ /** @defgroup Group1_Other Other * @ingroup Group1 */ /** @defgroup Group2_Other Other * @ingroup Group2 */
修改后的类代码示例:
/** * @ingroup Group1 * @{ */ class Class1 { /** * @ingroup Group1_Constructors * @{ */ Class1(); // 其他构造函数 /** @}*/ /** * @ingroup Group1_Other * @{ */ void Random(); // 其他函数 /** @}*/ }; /** @}*/ /** * @ingroup Group2 * @{ */ class Class2 { /** * @ingroup Group2_Constructors * @{ */ Class2(); // 其他构造函数 /** @}*/ /** * @ingroup Group2_Other * @{ */ void Random(); // 其他函数 /** @}*/ }; /** @}*/
方法2:使用@name定义本地子组(更简洁)
如果你的子组仅在对应父组内生效,不需要全局引用,可以直接在父组的作用域内用@name定义本地子组,不需要提前声明@defgroup,也不会出现全局ID冲突问题:
/** @defgroup Group1 Group 1 * Description for Group 1 * @{ */ class Class1 { /** * @name Constructors * @{ */ Class1(); // 其他构造函数 /** @}*/ /** * @name Other * @{ */ void Random(); // 其他函数 /** @}*/ }; /** @}*/ // Group1 结束 /** @defgroup Group2 Group 2 * Description for Group 2 * @{ */ class Class2 { /** * @name Constructors * @{ */ Class2(); // 其他构造函数 /** @}*/ /** * @name Other * @{ */ void Random(); // 其他函数 /** @}*/ }; /** @}*/ // Group2 结束
内容的提问来源于stack exchange,提问作者Dóri
相关产品推荐
相关产品推荐

