OpenMeta uses Doxygen for API extraction. For the "site" style docs (like OIIO), we render Doxygen XML via Sphinx + Breathe.
doxygen(optional:graphvizfor diagrams)- For Sphinx docs: Python packages listed in
docs/requirements.txt
Enable docs and build:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DOPENMETA_BUILD_DOCS=ON
cmake --build build --target openmeta_docsOutput goes to build/docs/doxygen/html/index.html inside the build directory.
When OPENMETA_BUILD_DOCS=ON, docs are also generated during install:
cmake --build build --target installEnable Sphinx docs and build:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DOPENMETA_BUILD_SPHINX_DOCS=ON
cmake --build build --target openmeta_docs_sphinxOutput goes to build/docs/html/index.html. Doxygen XML goes to
build/docs/doxygen/xml/index.xml.
The repository includes a GitHub Actions workflow at
.github/workflows/docs-pages.yml that builds the Sphinx site and publishes it
to GitHub Pages.
Recommended setup:
- In the repository settings, set Pages to GitHub Actions as the source. This is a one-time repository setting.
- Pull requests build the docs but do not deploy.
- Pushes to
mainand tag pushes build and deploy the site.
The workflow only runs when docs inputs change: docs/**, src/include/**,
README.md, SECURITY.md, NOTICE.md, CMakeLists.txt, or the workflow
itself.
From the OpenMeta/ repo root:
doxygen docs/DoxyfileOutput goes to build/docs/doxygen/html/index.html.
- Markdown:
README.mdis used as the main page. - Public API: everything under
src/include/openmeta/.
If you add new public headers or APIs, prefer documenting at the header or type/function level so the docs stay accurate as code moves.