Auto-generated API doc: doxygen → custom Python emitter → doc/api/.
`cmake --build build --target doc` runs Doxygen to produce XML, then `doc/gen_api_md.py` (~330 lines, stdlib-only) emits a Markdown tree under `doc/api/` that gitea renders directly in its file browser. - 24 class/struct pages + 51 source-file pages + indices, with source links of the form `../../../../src/...#L42` that gitea turns into clickable line-anchored links. - Doxyfile.in templated by CMake (XML-only output to build/doc/xml/). - Pure Python emitter, zero external deps — no doxybook2 (not packaged on Arch) and no moxygen (avoids Node). - Target gracefully disabled if Doxygen or Python 3 is missing at configure time; regular build target unaffected. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
55
doc/Doxyfile.in
Normal file
55
doc/Doxyfile.in
Normal file
@@ -0,0 +1,55 @@
|
||||
# Doxygen configuration for essim — produces XML only, consumed by
|
||||
# doxybook2 to generate the Markdown tree under doc/api/.
|
||||
# Substituted by CMake (`configure_file ... @ONLY`).
|
||||
|
||||
PROJECT_NAME = "@PROJECT_NAME@"
|
||||
PROJECT_NUMBER = "@PROJECT_VERSION@"
|
||||
PROJECT_BRIEF = "@PROJECT_DESCRIPTION@"
|
||||
|
||||
OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@
|
||||
INPUT = @CMAKE_SOURCE_DIR@/src
|
||||
RECURSIVE = YES
|
||||
FILE_PATTERNS = *.hpp *.cpp *.h
|
||||
EXCLUDE_PATTERNS = */build/* */build/_deps/*
|
||||
|
||||
# We only need XML; doxybook2 will turn that into Markdown.
|
||||
GENERATE_HTML = NO
|
||||
GENERATE_LATEX = NO
|
||||
GENERATE_XML = YES
|
||||
XML_OUTPUT = xml
|
||||
XML_PROGRAMLISTING = NO
|
||||
|
||||
# Extraction policy — include everything the user can usefully reach, but
|
||||
# keep private implementation details out by default.
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
|
||||
# Comment style — the existing code uses Doxygen-flavoured `///` and
|
||||
# `/** … */`, both of which Doxygen recognises by default. JAVADOC_AUTOBRIEF
|
||||
# lets a single-line comment serve as the brief description.
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
QT_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = YES
|
||||
|
||||
# Preprocess macros (forward declarations, #pragma once, etc.).
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
|
||||
# Warnings — be helpful but not noisy.
|
||||
QUIET = YES
|
||||
WARN_IF_UNDOCUMENTED = NO
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
|
||||
# Diagrams — Graphviz isn't needed for Markdown output; doxybook2 ignores
|
||||
# image references unless explicitly handled. Keep DOT off so the build
|
||||
# stays light.
|
||||
HAVE_DOT = NO
|
||||
|
||||
# Mainpage — link the top-level README so doxybook2 picks it up as the
|
||||
# landing page in doc/api/.
|
||||
USE_MDFILE_AS_MAINPAGE = @CMAKE_SOURCE_DIR@/README.md
|
||||
INPUT += @CMAKE_SOURCE_DIR@/README.md @CMAKE_SOURCE_DIR@/DESIGN.md
|
||||
Reference in New Issue
Block a user