不同组中的同名子组

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 的方法分配给另一组。