0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Quick start

To add an initial class diagram to your project, follow these steps:

  1. Enter your project's top level directory and run:
    clang-uml --init
  2. 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
  3. Run clang-uml in the project's top directory:
    clang-uml
    # or to see generation progress for each diagram
    clang-uml --progress
  4. 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.

  5. Add another diagram:
    clang-uml --add-sequence-diagram another_diagram
  6. 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]
  7. Generate only the new diagram in JSON format:
    clang-uml -n another_diagram -g json