To add an initial class diagram to your project, follow these steps:
- Enter your project's top level directory and run: 
 
- Edit the generated 
.clang-uml file and set the following: # Path to `compile_commands.json` directory
compilation_database_dir: .
# Path to diagram output directory
output_directory: diagrams
diagrams:
  # This is the name of the diagram
  some_class_diagram:
    type: class
    # Parse only translation units in `src` subdirectory
    glob:
      - src/*.cc
    # Render all names relative to `myproject` namespace
    using_namespace: myproject
    include:
      # Include only elements in `myproject` namespace
      namespaces:
        - myproject
    exclude:
      # Exclude elements in `myproject::detail` namespace
      namespaces:
        - myproject::detail
 
- Run 
clang-uml in the project's top directory: clang-uml
# or to see generation progress for each diagram
clang-uml --progress
 
Generate SVG images from the PlantUML diagrams: 
plantuml -tsvg diagrams/*.puml
 or generate also MermaidJS diagram (requires mermaid-cli): 
clang-uml --progress -n some_class_diagram -g mermaid
mmdc -i diagrams/some_class_diagram.mmd -o diagrams/some_class_diagram.svg
Steps 3 and 4 can be combined into one step: 
clang-uml -p -n some_class_diagram -g plantuml -r --plantuml-cmd="/usr/bin/plantuml -tsvg diagrams/{}.puml"
 where -r enables diagram rendering and --plantuml-cmd specifies command to execute on each generated diagram.
 
- Add another diagram: 
clang-uml --add-sequence-diagram another_diagram
 
- Now list the diagrams defined in the config file: 
clang-uml -l
The following diagrams are defined in the config file:
  - another_diagram [sequence]
  - some_class_diagram [class]
 
- Generate only the new diagram in JSON format: 
clang-uml -n another_diagram -g json