OVERVIEW: Generates documentation from source code and comments. Example usage for files without flags (default): $ clang-doc File1.cpp File2.cpp ... FileN.cpp Example usage for a project using a compile commands database: $ clang-doc --executor=all-TUs compile_commands.json USAGE: clang-doc [options] [... ] OPTIONS: Generic Options: --help - Display available options (--help-hidden for more) --help-list - Display list of available options (--help-list-hidden for more) --version - Display the version of this program clang-doc options: --asset= - User supplied asset path to override the default css and js files for html output --doxygen - Use only doxygen-style comments to generate docs. --extra-arg= - Additional argument to append to the compiler command line --extra-arg-before= - Additional argument to prepend to the compiler command line --format= - Format for outputted docs. =yaml - Documentation in YAML format. =md - Documentation in MD format. =html - Documentation in HTML format. --ignore-map-errors - Continue if files are not mapped correctly. --output= - Directory for outputting generated files. -p - Build path --project-name= - Name of project. --public - Document only public declarations. --repository= - URL of repository that hosts code. Used for links to definition locations. --source-root= - Directory where processed files are stored. Links to definition locations will only be generated if the file is in this dir. --stylesheets= - CSS stylesheets to extend the default styles. -p is used to read a compile command database. For example, it can be a CMake build directory in which a file named compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON CMake option to get this output). When no build path is specified, a search for compile_commands.json will be attempted through all parent paths of the first input file . See: https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an example of setting up Clang Tooling on a source tree. ... specify the paths of source files. These paths are looked up in the compile command database. If the path of a file is absolute, it needs to point into CMake's source tree. If the path is relative, the current working directory needs to be in the CMake source tree and the file must be in a subdirectory of the current working directory. "./" prefixes in the relative files will be automatically removed, but the rest of a relative path must be a suffix of a path in the compile command database.