See hdoc.io for more details. Usage documentation is hosted at hdoc.io/docs.
The contents of this repository are a subset of a private repository where hdoc's development takes place.
- 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.
- Clean, fast output. hdoc outputs fully static HTML with no required Javascript, ensuring your users never have to wait.
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/
Thanks for project MinGW, Cygwin and MSYS2, we are able to compile hdoc into native applications on Windows platform without any code changed.
In order to compile windows-native hdoc, an environment of MSYS2
and MinGW-w64-x86_64-gcc
is needed to be prepared. Then, follow the instructions below to build.
# Install dependent packages for MinGW
pacman -S groff
pacman -S unzip
pacman -S mingw-w64-x86_64-meson
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-clang
pacman -S mingw-w64-x86_64-clang-analyzer
pacman -S mingw-w64-x86_64-clang-tools-extra
# Set PATH
export PATH=/mingw64/bin:/mingw64/lib:$PATH # You can also add this line into ~/.bashrc
# 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/
It takes a long time (maybe hours) to build & link, so you need to be patient.
Though finally hdoc.exe will work well as a native win32 program, there are more work to do to solve some problems on Windows support.
The compile will fail when constructing libhdoc.a, which prevents the build of hdoc-client.exe in MSYS2. But hdoc.exe has no problem and you can just ignore this problem temporarily now.
Tips: Windows support of hdoc isn't officially maintained, because the hdoc organization do not develop or actively work on Windows platform. If faced with any problem, you can come to Github for help.
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 tests and unit tests
./index-tests
./unit-tests
# Running integration tests
cd ../tests/integration_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
├── 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 # Testing code
├── index-tests # Unit tests of hdoc's indexing functionality
├── integration-tests # Integration testing scripts
└── unit-tests # Unit tests for a small portion of hdoc's codebase
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:
- argparse
- Bulma
- cereal
- Clang
- cmark-gfm
- cpp-httplib
- CTML
- doctest
- highlight.js
- KaTeX
- LLVM
- minisearch
- spdlog
- tiny-process-library
- toml++
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].