不同组中的同名子组
Subgroups with the same name in different groups
我刚开始第一次使用 Doxygen 运行 遇到了以下问题:我正在尝试创建多个具有相同名称的子组,如下所示:
- Group 1
- Constructors
- Other
- Group 2
- Constructors
- Other
相反,我得到的是:
- Group 1
- Constructors
- (Constructors both from Group 1 and 2)
- Other
- (Others from both Group 1 and 2)
- Group 2
- Constructors
- (Constructors both from Group 1 and 2)
- Other
- (Others from both Group 1 and 2)
我当前的代码如下所示(在单独的 .h 文件中)
/** @defgroup Group1
* Description for Group 1
*/
/** @defgroup Group2
* Description for Group 2
*/
/* @defgroup Constructors
* @ingroup Group1
*/
/* @defgroup Constructors
* @ingroup Group2
*/
/* @defgroup Other
* @ingroup Group1
*/
/* @defgroup Other
* @ingroup Group2
*/
/**
* @ingroup Group1
* @{
*/
class Class1 {
/**
* @ingroup Constructors
* @{
*/
Class1();
(other constructors)
/** @}*/
/**
* @ingroup Other
* @{
*/
void Random();
(other functions)
/** @}*/
}; /** @}*/
/**
* @ingroup Group2
* @{
*/
class Class2 {
/**
* @ingroup Constructors
* @{
*/
Class1();
(other constructors)
/** @}*/
/**
* @ingroup Other
* @{
*/
void Random();
(other functions)
/** @}*/
}; /** @}*/
我尽量使代码简短,但我希望我的问题仍然很清楚。
提前致谢!
简答:
- 确保在 doxygen 注释 (/**) 中声明组,而不仅仅是 C 注释
- 组定义需要一个名字和一个头衔。名称 (Constructors_1) 必须是全局唯一的,并充当标识符。标题(构造函数)是呈现的内容,不需要是唯一的。
- 嵌套组可用于手动组织一些文档。然而,在 class 的 C++ 方法上这样做会适得其反,因为它会混淆 doxygen(请参阅下面的示例中第 1 组和第 2 组是如何被破坏的),这自然会记录 class 的方法使用 class,而不是其他地方。
- 使用组将整个 class 内容(包括所有内容)或功能组织成几个子组,但不要试图将 class 内容分解成更小的部分。
长答案:
/** @file foo.cc
Doxygen example.
*/
/** @defgroup Group1
* Description for Group 1
*/
/** @defgroup Group2
* Description for Group 2
*/
/** @defgroup Constructors_1 Constructors
Constructors from group 1.
* @ingroup Group1
*/
/** @defgroup Constructors_2 Constructors
Constructors from group 2.
* @ingroup Group2
*/
/** @defgroup Other_1 Other
Misc from group 1.
* @ingroup Group1
*/
/** @defgroup Other_2 Other
Misc from group 2.
* @ingroup Group2
*/
/** @defgroup Group3
* Description for Group 3
*/
/** @defgroup Stuff_3 Stuff
Stuff.
* @ingroup Group3
*/
/** @defgroup More_stuff_3 More stuff
More stuff.
* @ingroup Group3
*/
/**
* @ingroup Group1
* @{
*/
class Class1 {
/**
* @ingroup Constructors_1
* @{
*/
/** This is Class1. */
Class1();
/** @}*/
/**
* @ingroup Other_1
* @{
*/
/** This is Random 1. */
void Random();
/** @}*/
};
/** @}*/
/**
* @ingroup Group2
* @{
*/
class Class2 {
/**
* @ingroup Constructors_2
* @{
*/
/** This is Class2. */
Class2();
/** @}*/
/**
* @ingroup Other_2
* @{
*/
/** This is Random 2. */
void Random();
/** @}*/
};
/** @}*/
/**
* @ingroup Group3
* @{
*/
void init_group_3();
/**
* @ingroup Stuff_3
* @{
*/
/** This is some stuff. */
void do_something_here();
/** @}*/
/**
* @ingroup More_stuff_3
* @{
*/
/** This is more stuff. */
void do_something_more_here();
/** @}*/
};
/** @}*/
使用 Doxygen 1.9.2 进行测试,第 3 组按预期工作,第 1 组和第 2 组未正确呈现内容,因为手动将 class 的方法分配给另一组。
我刚开始第一次使用 Doxygen 运行 遇到了以下问题:我正在尝试创建多个具有相同名称的子组,如下所示:
- Group 1
- Constructors
- Other
- Group 2
- Constructors
- Other
相反,我得到的是:
- Group 1
- Constructors
- (Constructors both from Group 1 and 2)
- Other
- (Others from both Group 1 and 2)
- Group 2
- Constructors
- (Constructors both from Group 1 and 2)
- Other
- (Others from both Group 1 and 2)
我当前的代码如下所示(在单独的 .h 文件中)
/** @defgroup Group1
* Description for Group 1
*/
/** @defgroup Group2
* Description for Group 2
*/
/* @defgroup Constructors
* @ingroup Group1
*/
/* @defgroup Constructors
* @ingroup Group2
*/
/* @defgroup Other
* @ingroup Group1
*/
/* @defgroup Other
* @ingroup Group2
*/
/**
* @ingroup Group1
* @{
*/
class Class1 {
/**
* @ingroup Constructors
* @{
*/
Class1();
(other constructors)
/** @}*/
/**
* @ingroup Other
* @{
*/
void Random();
(other functions)
/** @}*/
}; /** @}*/
/**
* @ingroup Group2
* @{
*/
class Class2 {
/**
* @ingroup Constructors
* @{
*/
Class1();
(other constructors)
/** @}*/
/**
* @ingroup Other
* @{
*/
void Random();
(other functions)
/** @}*/
}; /** @}*/
我尽量使代码简短,但我希望我的问题仍然很清楚。 提前致谢!
简答:
- 确保在 doxygen 注释 (/**) 中声明组,而不仅仅是 C 注释
- 组定义需要一个名字和一个头衔。名称 (Constructors_1) 必须是全局唯一的,并充当标识符。标题(构造函数)是呈现的内容,不需要是唯一的。
- 嵌套组可用于手动组织一些文档。然而,在 class 的 C++ 方法上这样做会适得其反,因为它会混淆 doxygen(请参阅下面的示例中第 1 组和第 2 组是如何被破坏的),这自然会记录 class 的方法使用 class,而不是其他地方。
- 使用组将整个 class 内容(包括所有内容)或功能组织成几个子组,但不要试图将 class 内容分解成更小的部分。
长答案:
/** @file foo.cc
Doxygen example.
*/
/** @defgroup Group1
* Description for Group 1
*/
/** @defgroup Group2
* Description for Group 2
*/
/** @defgroup Constructors_1 Constructors
Constructors from group 1.
* @ingroup Group1
*/
/** @defgroup Constructors_2 Constructors
Constructors from group 2.
* @ingroup Group2
*/
/** @defgroup Other_1 Other
Misc from group 1.
* @ingroup Group1
*/
/** @defgroup Other_2 Other
Misc from group 2.
* @ingroup Group2
*/
/** @defgroup Group3
* Description for Group 3
*/
/** @defgroup Stuff_3 Stuff
Stuff.
* @ingroup Group3
*/
/** @defgroup More_stuff_3 More stuff
More stuff.
* @ingroup Group3
*/
/**
* @ingroup Group1
* @{
*/
class Class1 {
/**
* @ingroup Constructors_1
* @{
*/
/** This is Class1. */
Class1();
/** @}*/
/**
* @ingroup Other_1
* @{
*/
/** This is Random 1. */
void Random();
/** @}*/
};
/** @}*/
/**
* @ingroup Group2
* @{
*/
class Class2 {
/**
* @ingroup Constructors_2
* @{
*/
/** This is Class2. */
Class2();
/** @}*/
/**
* @ingroup Other_2
* @{
*/
/** This is Random 2. */
void Random();
/** @}*/
};
/** @}*/
/**
* @ingroup Group3
* @{
*/
void init_group_3();
/**
* @ingroup Stuff_3
* @{
*/
/** This is some stuff. */
void do_something_here();
/** @}*/
/**
* @ingroup More_stuff_3
* @{
*/
/** This is more stuff. */
void do_something_more_here();
/** @}*/
};
/** @}*/
使用 Doxygen 1.9.2 进行测试,第 3 组按预期工作,第 1 组和第 2 组未正确呈现内容,因为手动将 class 的方法分配给另一组。