From 751e39c35bbf5fd34d9167558070851cbb68ee01 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Tue, 27 Jun 2023 11:16:09 +0200 Subject: [PATCH] Add doxygen and graphviz support --- .readthedocs.yaml | 3 +++ Doxyfile | 6 +++--- docs/conf.py | 27 +++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index ffba68da..5ae534d9 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,6 +7,9 @@ python: - docs build: os: ubuntu-22.04 + apt_packages: + - doxygen + - graphviz tools: python: "3.11" sphinx: diff --git a/Doxyfile b/Doxyfile index 07b385ec..a1143702 100644 --- a/Doxyfile +++ b/Doxyfile @@ -57,7 +57,7 @@ PROJECT_BRIEF = "Popular C++ unit testing framework" # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = docs/doxygen +OUTPUT_DIRECTORY = docs/build/doxygen # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -1088,7 +1088,7 @@ IGNORE_PREFIX = # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. -GENERATE_HTML = YES +GENERATE_HTML = NO # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -1946,7 +1946,7 @@ MAN_LINKS = NO # captures the structure of the code including all documentation. # The default value is: NO. -GENERATE_XML = NO +GENERATE_XML = YES # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of diff --git a/docs/conf.py b/docs/conf.py index 8e161469..37d16f2f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,3 +1,9 @@ +import os +import subprocess + +from sphinx.application import Sphinx +from pathlib import Path + project = 'Catch2' copyright = '2023, Martin Hořeňovský' author = 'Martin Hořeňovský' @@ -19,11 +25,28 @@ exclude_patterns = [ ] source_suffix = [".md"] - html_theme = 'furo' -#html_static_path = ['_static'] +# html_static_path = ['_static'] myst_enable_extensions = [ "tasklist", "colon_fence", ] + +breathe_projects = { + "Catch2": "build/doxygen/xml", +} +breathe_default_project = "Catch2" + + +def generate_doxygen_xml(app: Sphinx): + """ + Run the doxygen commands + """ + os.chdir(Path(app.confdir).parent) + subprocess.run(["doxygen"]) + + +def setup(app: Sphinx): + # Add hook for building doxygen xml when needed + app.connect("builder-inited", generate_doxygen_xml)