Как добавить группу в несколько групп в Doxygen, не жертвуя удобочитаемостью документа - PullRequest
0 голосов
/ 10 января 2019

У меня есть 4 группы, от G1 до G4, документированные в Doxygen следующим образом.

/**
@defgroup G1 Group 1
@brief A brief description of group 1.
*/

/**
@defgroup G2 Group 2
@brief A brief description of group 2.
*/

/**
@defgroup G3 Group 3
@brief A brief description of group 3.
*/

/**
@defgroup G4 Group 4
@brief A brief description of group 4.
*/

Я хочу, чтобы они были сгруппированы тремя различными способами: 1) все, 2) группа нечетных и 3) группа четных. Для этого я сделал следующее.

/**
@defgroup all_groups All groups
@{
    @defgroup G1
    @defgroup G2
    @defgroup G3
    @defgroup G4
@}
*/

/**
@defgroup odd_groups Odd groups
@{
    @defgroup G1
    @defgroup G3
@}
*/

/**
@defgroup even_groups Even groups
@{
    @defgroup G2
    @defgroup G4
@}
*/

Работает с doxygen-1.8.13. Однако это незаконно. Потому что согласно документации Doxygen, defgroup следует использовать только один раз на группу.

Правильная реализация должна быть

/**
@defgroup G1 Group 1
@ingroup all_groups odd_groups
@brief A brief description of group 1.
*/

/**
@defgroup G2 Group 2
@ingroup all_groups even_groups
@brief A brief description of group 2.
*/

...

/**
@defgroup all_groups All groups
@defgroup odd_groups Odd groups
@defgroup even_groups Even groups
*/

или

/**
@defgroup all_groups All groups

    @addtogroup G1
    @ingroup all_groups

    @addtogroup G2
    @ingroup all_groups

    @addtogroup G3
    @ingroup all_groups

    @addtogroup G4
    @ingroup all_groups 
*/

/**
@defgroup odd_groups Odd groups

    @addtogroup G1
    @ingroup odd_groups

    @addtogroup G3
    @ingroup odd_groups
*/

/**
@defgroup even_groups Even groups

    @addtogroup G2
    @ingroup even_groups

    @addtogroup G4
    @ingroup even_groups    
*/

Однако читаемость исчезает. В любом случае документацию нелегко читать и поддерживать. Я искал в сети возможный обходной путь, но тщетно. Мне не хватает какого-то элегантного решения?

Я бы предпочел что-то вроде @addgroup для достижения этой цели.

/**
@defgroup all_groups All groups
@{
    @addgroup G1
    @addgroup G2
    @addgroup G3
    @addgroup G4
@}
*/

/**
@defgroup odd_groups Odd groups
@{
    @addgroup G1
    @addgroup G3
@}
*/

/**
@defgroup even_groups Even groups
@{
    @addgroup G2
    @addgroup G4
@}
*/
...