# Grouping Modes {#grouping-modes}


Moxygen supports both common Doxygen documentation styles.


## Explicit grouped compounds {#explicit-grouped-compounds}


Use `@defgroup`, `@ingroup`, and related tags. Doxygen produces normal group XML and Moxygen renders those groups directly.

```bash
moxygen --groups --output api-%s.md /path/to/xml
```

The root `api.md` page lists top-level groups before classes. Group pages list nested groups before classes and include breadcrumbs back to their parent groups.


## File-level grouped code {#file-level-grouped-code}


Some codebases group files with `@addtogroup` blocks or `@file` comments with `@ingroup`, but Doxygen emits sparse group XML and leaves the real compound ownership in file XML.

Moxygen recovers those grouped classes, namespaces, and members when you pass `--source-root`:

```bash
moxygen --groups \
  --source-root /path/to/project/src \
  --output api-%s.md \
  /path/to/doxygen/xml
```

Shared umbrella namespaces across multiple groups are preserved without dropping group-owned root classes, and cross-page refs are resolved correctly for both markdown mirrors and generated multi-page output.

If your XML already contains fully populated groups, `--source-root` is optional.
