This is an example of how to use the doxygen alongside plantuml to generate UML diagrams for C++ classes. You will need to provide the plantuml.jar file to the rule, as well as the java executable.
The JAR can be downloaded from the plantuml releases page.
# We will use the Java toolchain from rules_java to run the JAR bazel_dep(name = "rules_java", version = "8.15.1") http_file = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") http_file( name = "plantuml_file", urls = ["https://github.com/plantuml/plantuml/releases/download/v1.2025.4/plantuml-1.2025.4.jar"], sha256 = "26518e14a3a04100cd76c0d96cab2d1171f36152215edd9790a28d20268200c1", downloaded_file_path = "plantuml.jar", )
Since the location of the JAR can be difficult to determine, we recommend copying it to the OUTDIR folder using the copy_file rule from aspect_bazel_lib.
load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file") # This is highly advised to avoid chasing the jar file who knows where # Instead, we copy it in the OUTDIR folder copy_file( name = "plantuml", src = "@plantuml_file//file", out = "plantuml.jar", allow_symlink = False, is_executable = False, )
Lastly, you can use the doxygen rule as follows:
load("@doxygen//:doxygen.bzl", "doxygen") doxygen( name = "doxygen", srcs = [ "lib.h", ":plantuml", ], plantuml_jar_path = "$(OUTDIR)", project_brief = "Example project for doxygen", project_name = "Plantuml example", tools = [ # Using the java executable from `rules_java` "@rules_java//toolchains:current_java_runtime", ], )