hdoc: the modern documentation tool for C++
An important notice about this repository
The contents of this repository are a subset of a private repository where hdoc's development takes place.
Overview and features
- Autogenerated API documentation. hdoc generated API documentation for every function, record, enum, and namespace in your codebase.
- Integrated Markdown pages. hdoc converts your Markdown pages into a website and puts it next to your API docs. All of your documentation is in one place.
- Instant codebase search. Instant search-as-you-type lookup of symbols throughout your entire codebase.
- Easy CI integration. Your documentation is never out of date if you build it with your code. All you need to do is add hdoc to your build job.
- Advanced C++ parser. hdoc understands the newest C++ features with its advanced LLVM/Clang-based parser.
hdoc depends on LLVM/Clang and OpenSSL, and all other dependencies are vendored in
subprojects/. hdoc also comes with a Nix Flake which sets up a development environment for you with all of the needed dependencies, and should work on all Linux distributions. Follow the instructions below to build hdoc.
# Build hdoc meson build # Configure the build directory ninja -C build # Compile hdoc binaries and tests ./build/hdoc --verbose # Run hdoc over itself, saving the HTML documentation to ./hdoc-output/
More instructions for using hdoc can be found at hdoc.io/docs.
hdoc has a suite of unit and integration tests, which can be run using the instructions below.
# Assumes you've already built hdoc cd build # Running indexing unit tests ./index-tests # Running integration tests cd ../tests ./clone_test_repos.sh # Pull testing repos from GitHub ./test.sh # Run hdoc over testing repos
hdoc ├── assets # Static HTML/CSS/Favicons used in the generated HTML docs ├── index-tests # Unit tests of hdoc's indexing functionality ├── site # Source code for hdoc.io and hdoc's documentation ├── src # C++ source code │ ├── frontend # Parses configuration file and CLI arguments │ ├── indexer # Parses a codebase and extracts documentation from it into an index │ ├── serde # Serialization/Deserialization of hdoc's index into HTML and other formats │ ├── support # Ancillary code used to parallelize indexing │ └── types # Types used by hdoc ├── subprojects # Vendored dependencies └── tests # Integration testing scripts
hdoc relies on several open source software projects. We thank all of the contributors to these projects for their work. These are listed below in alphabetical order:
More information, including licenses, can be found at hdoc.io/oss.
hdoc is available under the AGPLv3 license, or a custom commercial license. For more information about commercial licensing, reach out to [email protected].