include/
include/ holds the public API of MrDocs, and it has one directory, include/mrdocs/.
Everything there installs, and consumers reach it as <mrdocs/…>.
Nothing under src/ is public: private headers live beside their sources in src/mrdocs/, and no header here includes one.
Content that belongs elsewhere
| Content | Where it goes |
|---|---|
Private headers |
|
Headers of the standalone components |
|
Generated headers ( |
The build tree. The template |
Dependencies' headers |
Bootstrap fetches them into |
Contents by subdirectory
| Directory | Purpose |
|---|---|
|
Value types and small containers ( |
|
Configuration types and the generated settings surface. |
|
The scripting engines (JavaScript, Lua). |
|
The extension and generator registries, and the contexts extensions receive. |
|
The extracted-symbol model, the core domain types. |
|
Small utilities, grouped by theme: |
|
Implementation details of the public headers, in the |
The top-level headers (Config.hpp, Corpus.hpp, Generator.hpp, Metadata.hpp, Plugin.hpp, Session.hpp, Transform.hpp and others) are the entry points of those modules.
Build integration
include/ has no CMakeLists.txt.
src/CMakeLists.txt wires it in three ways:
-
The sources of
mrdocs-core-object-filestakeinclude/.hpp,.incand*.ippin the same glob as the private sources. -
mrdocs-core-headersis anINTERFACEtarget thatmrdocs-coreandmrdocs-core-object-fileslink publicly, and so doesmrdocs-plugin-api, which plugins link. It carries the paths, the C++23 requirement, and the compile options and definitions that every consumer of the headers needs.-
Its own paths are
include/and the generatedinclude/of the build tree. Linking the polyfill brings theinclude/oflibs/polyfill. Those oflibs/domandlibs/handlebarscome from their include-directory property, with no link.
-
-
With
MRDOCS_INSTALLon, the install step copies the.hpp,.ippand*.incfiles ofinclude/mrdocsand of the generatedmrdocsdirectory intoCMAKE_INSTALL_INCLUDEDIR.