The modern documentation tool for C++.

Overview

hdoc logo

hdoc: the modern documentation tool for C++

See hdoc.io for more details. Usage documentation is hosted at hdoc.io/docs.

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.
  • Clean, fast output. hdoc outputs fully static HTML with no required Javascript, ensuring your users never have to wait.

Quick start

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.

Running tests

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

Repository structure

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

Attribution

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.

License

hdoc is available under the AGPLv3 license, or a custom commercial license. For more information about commercial licensing, reach out to [email protected].

Issues
  • Hide Private Members?

    Hide Private Members?

    Is there a way we could prevent including private members with documentation? They kind of clutter the docs generated with members that developers can't even use.

    opened by jm4games 11
  • Enable C language support in meson.build

    Enable C language support in meson.build

    When I tried creating a Dockerfile to build hdoc, I found that the CMake steps failed because C language support was not enabled. Adding 'c' to this list makes things work.

    Example failure: https://gist.github.com/jtbandes/b5eea7b8543fa3c1681dda1837e6a0a0

    Determining dependency 'LLVM' with CMake executable '/usr/bin/cmake'
    Try CMake generator: Ninja
    
    ...
    
    CMake failed for generator Ninja and package LLVM with error code 1
    OUT:
    
    ...
    
    -- Could NOT find FFI (missing: HAVE_FFI_CALL) 
    -- Could NOT find Terminfo (missing: Terminfo_LINKABLE) 
    -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
    -- Found LibXml2: /usr/lib/aarch64-linux-gnu/libxml2.so (found version "2.9.13") 
    -- Configuring incomplete, errors occurred!
    See also "/hdoc/build/meson-private/cmake_LLVM/CMakeFiles/CMakeOutput.log".
    
    ERR:
    CMake Error at /usr/share/cmake-3.22/Modules/Internal/CheckSourceCompiles.cmake:44 (message):
      check_source_compiles: C: needs to be enabled before use.
    Call Stack (most recent call first):
      /usr/share/cmake-3.22/Modules/CheckCSourceCompiles.cmake:76 (cmake_check_source_compiles)
      /usr/lib/llvm-14/cmake/FindFFI.cmake:44 (check_c_source_compiles)
      /usr/lib/llvm-14/cmake/LLVMConfig.cmake:242 (find_package)
      CMakeLists.txt:9 (find_package)
    
    
    CMake Error at /usr/share/cmake-3.22/Modules/Internal/CheckSourceCompiles.cmake:44 (message):
      check_source_compiles: C: needs to be enabled before use.
    Call Stack (most recent call first):
      /usr/share/cmake-3.22/Modules/CheckCSourceCompiles.cmake:76 (cmake_check_source_compiles)
      /usr/lib/llvm-14/cmake/FindTerminfo.cmake:21 (check_c_source_compiles)
      /usr/lib/llvm-14/cmake/LLVMConfig.cmake:249 (find_package)
      CMakeLists.txt:9 (find_package)
    
    opened by jtbandes 5
  • Incorrect/Weird display of function

    Incorrect/Weird display of function

    When I declare a function as a return type like so

    constexpr auto borrow() const& noexcept -> const value_type&;
    

    hdoc displays it like so https://imgur.com/a/A17UJ6g

    It seems to split the const& specifier on a member function and split it in 2 parts. Not sure why it happens. It's not a big bug, but i thought it was worth reporting

    opened by Wmbat 5
  • Build error (can't find clang)

    Build error (can't find clang)

    To reproduce:

    1. clone repo
    2. meson build
    3. See this:
    /tmp/hdoc(master) » CC=gcc CXX=g++ meson build                                               [email protected]
    The Meson build system
    Version: 0.57.1
    Source dir: /tmp/hdoc
    Build dir: /tmp/hdoc/build
    Build type: native build
    Project name: hdoc
    Project version: 1.0.1
    C++ compiler for the host machine: g++ (gcc 10.2.0 "g++ (GCC) 10.2.0")
    C++ linker for the host machine: g++ ld.bfd 2.36.1
    Host machine cpu family: x86_64
    Host machine cpu: x86_64
    Found CMake: /home/bogdan/.local/bin/cmake (3.18.4)
    WARNING: Ignoring LLVM CMake dependency because dynamic was requested
    llvm-config found: YES (/usr/bin/llvm-config) 11.1.0
    Run-time dependency LLVM found: YES 11.1.0
    Run-time dependency clang found: NO 
    
    meson.build:13:0: ERROR: Dependency Clang not found: CMake: invalid module clangTooling for Clang.
    Try to explicitly specify one or more targets with the "modules" property.
    Valid targets are:
    ['LLVMDemangle', 'LLVMSupport', 'LLVMTableGen', 'llvm-tblgen', 'LLVMCore', 'LLVMFuzzMutate', 'LLVMIRReader', 'LLVMCodeGen', 'LLVMSelectionDAG', 'LLVMAsmPrinter', 'LLVMMIRParser', 'LLVMGlobalISel', 'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter', 'LLVMBitstreamReader', 'LLVMDWARFLinker', 'LLVMExtensions', 'LLVMFrontendOpenACC', 'LLVMFrontendOpenMP', 'LLVMTransformUtils', 'LLVMInstrumentation', 'LLVMAggressiveInstCombine', 'LLVMInstCombine', 'LLVMScalarOpts', 'LLVMipo', 'LLVMVectorize', 'LLVMObjCARCOpts', 'LLVMCoroutines', 'LLVMCFGuard', 'LLVMLinker', 'LLVMAnalysis', 'LLVMLTO', 'LLVMMC', 'LLVMMCParser', 'LLVMMCDisassembler', 'LLVMMCA', 'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMRemarks', 'LLVMDebugInfoDWARF', 'LLVMDebugInfoGSYM', 'LLVMDebugInfoMSF', 'LLVMDebugInfoCodeView', 'LLVMDebugInfoPDB', 'LLVMSymbolize', 'LLVMExecutionEngine', 'LLVMInterpreter', 'LLVMJITLink', 'LLVMMCJIT', 'LLVMOrcError', 'LLVMOrcJIT', 'LLVMRuntimeDyld', 'LLVMTarget', 'LLVMAArch64CodeGen', 'LLVMAArch64AsmParser', 'LLVMAArch64Disassembler', 'LLVMAArch64Desc', 'LLVMAArch64Info', 'LLVMAArch64Utils', 'LLVMAMDGPUCodeGen', 'LLVMAMDGPUAsmParser', 'LLVMAMDGPUDisassembler', 'LLVMAMDGPUDesc', 'LLVMAMDGPUInfo', 'LLVMAMDGPUUtils', 'LLVMARMCodeGen', 'LLVMARMAsmParser', 'LLVMARMDisassembler', 'LLVMARMDesc', 'LLVMARMInfo', 'LLVMARMUtils', 'LLVMAVRCodeGen', 'LLVMAVRAsmParser', 'LLVMAVRDisassembler', 'LLVMAVRDesc', 'LLVMAVRInfo', 'LLVMBPFCodeGen', 'LLVMBPFAsmParser', 'LLVMBPFDisassembler', 'LLVMBPFDesc', 'LLVMBPFInfo', 'LLVMHexagonCodeGen', 'LLVMHexagonAsmParser', 'LLVMHexagonDisassembler', 'LLVMHexagonDesc', 'LLVMHexagonInfo', 'LLVMLanaiCodeGen', 'LLVMLanaiAsmParser', 'LLVMLanaiDisassembler', 'LLVMLanaiDesc', 'LLVMLanaiInfo', 'LLVMMipsCodeGen', 'LLVMMipsAsmParser', 'LLVMMipsDisassembler', 'LLVMMipsDesc', 'LLVMMipsInfo', 'LLVMMSP430CodeGen', 'LLVMMSP430Desc', 'LLVMMSP430Info', 'LLVMMSP430AsmParser', 'LLVMMSP430Disassembler', 'LLVMNVPTXCodeGen', 'LLVMNVPTXDesc', 'LLVMNVPTXInfo', 'LLVMPowerPCCodeGen', 'LLVMPowerPCAsmParser', 'LLVMPowerPCDisassembler', 'LLVMPowerPCDesc', 'LLVMPowerPCInfo', 'LLVMRISCVCodeGen', 'LLVMRISCVAsmParser', 'LLVMRISCVDisassembler', 'LLVMRISCVDesc', 'LLVMRISCVInfo', 'LLVMRISCVUtils', 'LLVMSparcCodeGen', 'LLVMSparcAsmParser', 'LLVMSparcDisassembler', 'LLVMSparcDesc', 'LLVMSparcInfo', 'LLVMSystemZCodeGen', 'LLVMSystemZAsmParser', 'LLVMSystemZDisassembler', 'LLVMSystemZDesc', 'LLVMSystemZInfo', 'LLVMWebAssemblyCodeGen', 'LLVMWebAssemblyAsmParser', 'LLVMWebAssemblyDisassembler', 'LLVMWebAssemblyDesc', 'LLVMWebAssemblyInfo', 'LLVMX86CodeGen', 'LLVMX86AsmParser', 'LLVMX86Disassembler', 'LLVMX86Desc', 'LLVMX86Info', 'LLVMXCoreCodeGen', 'LLVMXCoreDisassembler', 'LLVMXCoreDesc', 'LLVMXCoreInfo', 'LLVMAsmParser', 'LLVMLineEditor', 'LLVMProfileData', 'LLVMCoverage', 'LLVMPasses', 'LLVMTextAPI', 'LLVMDlltoolDriver', 'LLVMLibDriver', 'LLVMXRay', 'LLVMWindowsManifest', 'FileCheck', 'llvm-PerfectShuffle', 'count', 'not', 'yaml-bench', 'LTO', 'LLVMgold', 'llvm-ar', 'llvm-config', 'llvm-lto', 'llvm-profdata', 'bugpoint', 'dsymutil', 'llc', 'lli-child-target', 'lli', 'llvm-as', 'llvm-bcanalyzer', 'llvm-c-test', 'llvm-cat', 'llvm-cfi-verify', 'llvm-cov', 'llvm-cvtres', 'llvm-cxxdump', 'llvm-cxxfilt', 'llvm-cxxmap', 'llvm-diff', 'llvm-dis', 'llvm-dwarfdump', 'llvm-dwp', 'llvm-elfabi', 'llvm-exegesis', 'llvm-extract', 'llvm-gsymutil', 'llvm-ifs', 'llvm-jitlink', 'llvm-link', 'llvm-lipo', 'llvm-lto2', 'llvm-mc', 'llvm-mca', 'llvm-ml', 'llvm-modextract', 'llvm-mt', 'llvm-nm', 'llvm-objcopy', 'llvm-objdump', 'llvm-opt-report', 'llvm-pdbutil', 'llvm-rc', 'llvm-readobj', 'llvm-reduce', 'llvm-rtdyld', 'LLVM', 'llvm-size', 'llvm-split', 'llvm-stress', 'llvm-strings', 'llvm-symbolizer', 'llvm-undname', 'llvm-xray', 'obj2yaml', 'opt', 'Remarks', 'sancov', 'sanstats', 'verify-uselistorder', 'yaml2obj', 'intrinsics_gen', 'omp_gen', 'acc_gen', 'diagtool', 'clang', 'clang-format', 'clang-offload-bundler', 'clang-offload-wrapper', 'clang-scan-deps', 'clang-rename', 'clang-refactor', 'clang-cpp', 'clang-check', 'clang-extdef-mapping', 'clang-apply-replacements', 'clang-reorder-fields', 'modularize', 'clang-tidy', 'clang-change-namespace', 'clang-doc', 'clang-include-fixer', 'find-all-symbols', 'clang-move', 'clang-query', 'pp-trace', 'clangd', 'libclang', 'clang-tablegen-targets']
    
    A full log can be found at /tmp/hdoc/build/meson-logs/meson-log.txt
    

    clang is installed, as well as g++/gcc. I tried to set CC=clang CXX=clang++, but this didn't help.

    opened by Warchant 5
  • Ability to hide timestamp in generated output

    Ability to hide timestamp in generated output

    This is a minor request, but one small change in my hdoc patches is to hide the timestamp from the footer of generated docs:

    image

    Removing the timestamp reduces unnecessary thrash in the generated output. For example, this docs update does not include any changes to cpp docs because the timestamp is not in the footer.

    opened by jtbandes 3
  • Can't find output dir folder

    Can't find output dir folder

    Currently I have this setup in the .hdoc.toml file

    [project]
    name = "Simulation"
    version = "1.0.0"
    git_repo_url = "https://github.com/ShulkMaster/Simu_01-2022/tree/master/"
    
    [paths]
    compile_commands = "build/compile_commands.json"
    output_dir = "docs"
    

    When use the hdoc -v command all the outputs looks ok, it detects everything and even shows the message ' Documentation uploaded successfully' however I wish to use a self hosted version of the documentation but in the directory I cant find the docs folder anywhere.

    I checked the documentation and can't find any obvious way of doing so such a a command line arg or something, Is there any step I'm missing?

    the setup is windows OS but the commands are run through WSL2 on Ubuntu distro 20.04 and the binary I got it from the official website by creating my account

    Here's is my publish doc so you can see It works but I can't get the static files i need to host it.

    My documentation

    opened by ShulkMaster 3
  • Missing module on Arch Linux

    Missing module on Arch Linux

    When building on Arch, meson build gives the following error:

    The Meson build system
    Version: 0.62.2
    Source dir: /home/ryan/sourcebuilds/hdoc
    Build dir: /home/ryan/sourcebuilds/hdoc/build
    Build type: native build
    Project name: hdoc
    Project version: 1.2.4
    C++ compiler for the host machine: c++ (gcc 12.1.0 "c++ (GCC) 12.1.0")
    C++ linker for the host machine: c++ ld.bfd 2.38
    Host machine cpu family: x86_64
    Host machine cpu: x86_64
    WARNING: The LLVM dependency was not found via CMake since both a C and C++ compiler are required.
    llvm-config found: YES (/usr/bin/llvm-config) 13.0.1
    Run-time dependency LLVM found: YES 13.0.1
    Found CMake: /usr/bin/cmake (3.23.2)
    Run-time dependency clang found: NO 
    
    meson.build:13:0: ERROR: Dependency Clang not found: CMake: invalid module clangTooling for Clang.
    Try to explicitly specify one or more targets with the "modules" property.
    Valid targets are:
    ['ZLIB::ZLIB', 'LibXml2::LibXml2', 'LibXml2::xmllint', 'LLVMDemangle', 'LLVMSupport', 'LLVMTableGen', 'LLVMTableGenGlobalISel', 'llvm-tblgen', 'LLVMCore', 'LLVMFuzzMutate', 'LLVMFileCheck', 'LLVMInterfaceStub', 'LLVMIRReader', 'LLVMCodeGen', 'LLVMSelectionDAG', 'LLVMAsmPrinter', 'LLVMMIRParser', 'LLVMGlobalISel', 'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter', 'LLVMBitstreamReader', 'LLVMDWARFLinker', 'LLVMExtensions', 'LLVMFrontendOpenACC', 'LLVMFrontendOpenMP', 'LLVMTransformUtils', 'LLVMInstrumentation', 'LLVMAggressiveInstCombine', 'LLVMInstCombine', 'LLVMScalarOpts', 'LLVMipo', 'LLVMVectorize', 'LLVMObjCARCOpts', 'LLVMCoroutines', 'LLVMCFGuard', 'LLVMLinker', 'LLVMAnalysis', 'LLVMLTO', 'LLVMMC', 'LLVMMCParser', 'LLVMMCDisassembler', 'LLVMMCA', 'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMRemarks', 'LLVMDebugInfoDWARF', 'LLVMDebugInfoGSYM', 'LLVMDebugInfoMSF', 'LLVMDebugInfoCodeView', 'LLVMDebugInfoPDB', 'LLVMSymbolize', 'LLVMDWP', 'LLVMExecutionEngine', 'LLVMInterpreter', 'LLVMJITLink', 'LLVMMCJIT', 'LLVMOrcJIT', 'LLVMOrcShared', 'LLVMOrcTargetProcess', 'LLVMRuntimeDyld', 'LLVMTarget', 'LLVMAArch64CodeGen', 'LLVMAArch64AsmParser', 'LLVMAArch64Disassembler', 'LLVMAArch64Desc', 'LLVMAArch64Info', 'LLVMAArch64Utils', 'LLVMAMDGPUCodeGen', 'LLVMAMDGPUAsmParser', 'LLVMAMDGPUDisassembler', 'LLVMAMDGPUDesc', 'LLVMAMDGPUInfo', 'LLVMAMDGPUUtils', 'LLVMARMCodeGen', 'LLVMARMAsmParser', 'LLVMARMDisassembler', 'LLVMARMDesc', 'LLVMARMInfo', 'LLVMARMUtils', 'LLVMAVRCodeGen', 'LLVMAVRAsmParser', 'LLVMAVRDisassembler', 'LLVMAVRDesc', 'LLVMAVRInfo', 'LLVMBPFCodeGen', 'LLVMBPFAsmParser', 'LLVMBPFDisassembler', 'LLVMBPFDesc', 'LLVMBPFInfo', 'LLVMHexagonCodeGen', 'LLVMHexagonAsmParser', 'LLVMHexagonDisassembler', 'LLVMHexagonDesc', 'LLVMHexagonInfo', 'LLVMLanaiCodeGen', 'LLVMLanaiAsmParser', 'LLVMLanaiDisassembler', 'LLVMLanaiDesc', 'LLVMLanaiInfo', 'LLVMMipsCodeGen', 'LLVMMipsAsmParser', 'LLVMMipsDisassembler', 'LLVMMipsDesc', 'LLVMMipsInfo', 'LLVMMSP430CodeGen', 'LLVMMSP430Desc', 'LLVMMSP430Info', 'LLVMMSP430AsmParser', 'LLVMMSP430Disassembler', 'LLVMNVPTXCodeGen', 'LLVMNVPTXDesc', 'LLVMNVPTXInfo', 'LLVMPowerPCCodeGen', 'LLVMPowerPCAsmParser', 'LLVMPowerPCDisassembler', 'LLVMPowerPCDesc', 'LLVMPowerPCInfo', 'LLVMRISCVCodeGen', 'LLVMRISCVAsmParser', 'LLVMRISCVDisassembler', 'LLVMRISCVDesc', 'LLVMRISCVInfo', 'LLVMSparcCodeGen', 'LLVMSparcAsmParser', 'LLVMSparcDisassembler', 'LLVMSparcDesc', 'LLVMSparcInfo', 'LLVMSystemZCodeGen', 'LLVMSystemZAsmParser', 'LLVMSystemZDisassembler', 'LLVMSystemZDesc', 'LLVMSystemZInfo', 'LLVMWebAssemblyCodeGen', 'LLVMWebAssemblyAsmParser', 'LLVMWebAssemblyDisassembler', 'LLVMWebAssemblyDesc', 'LLVMWebAssemblyInfo', 'LLVMWebAssemblyUtils', 'LLVMX86CodeGen', 'LLVMX86AsmParser', 'LLVMX86Disassembler', 'LLVMX86Desc', 'LLVMX86Info', 'LLVMXCoreCodeGen', 'LLVMXCoreDisassembler', 'LLVMXCoreDesc', 'LLVMXCoreInfo', 'LLVMAsmParser', 'LLVMLineEditor', 'LLVMProfileData', 'LLVMCoverage', 'LLVMPasses', 'LLVMTextAPI', 'LLVMDlltoolDriver', 'LLVMLibDriver', 'LLVMXRay', 'LLVMWindowsManifest', 'FileCheck', 'llvm-PerfectShuffle', 'count', 'not', 'yaml-bench', 'LTO', 'LLVMgold', 'llvm-ar', 'llvm-config', 'llvm-lto', 'llvm-profdata', 'bugpoint', 'dsymutil', 'llc', 'lli-child-target', 'lli', 'llvm-as', 'llvm-bcanalyzer', 'llvm-c-test', 'llvm-cat', 'llvm-cfi-verify', 'LLVMCFIVerify', 'llvm-cov', 'llvm-cvtres', 'llvm-cxxdump', 'llvm-cxxfilt', 'llvm-cxxmap', 'llvm-diff', 'llvm-dis', 'llvm-dwarfdump', 'llvm-dwp', 'llvm-exegesis', 'LLVMExegesisX86', 'LLVMExegesisAArch64', 'LLVMExegesisPowerPC', 'LLVMExegesisMips', 'LLVMExegesis', 'llvm-extract', 'llvm-gsymutil', 'llvm-ifs', 'llvm-jitlink-executor', 'llvm-jitlink', 'llvm-libtool-darwin', 'llvm-link', 'llvm-lipo', 'llvm-lto2', 'llvm-mc', 'LLVMMCACustomBehaviourAMDGPU', 'llvm-mca', 'llvm-ml', 'llvm-modextract', 'llvm-mt', 'llvm-nm', 'llvm-objcopy', 'llvm-objdump', 'llvm-opt-report', 'llvm-pdbutil', 'llvm-profgen', 'llvm-rc', 'llvm-readobj', 'llvm-reduce', 'llvm-rtdyld', 'LLVM', 'llvm-sim', 'llvm-size', 'llvm-split', 'llvm-stress', 'llvm-strings', 'llvm-symbolizer', 'llvm-tapi-diff', 'llvm-undname', 'llvm-xray', 'obj2yaml', 'opt', 'Remarks', 'sancov', 'sanstats', 'split-file', 'verify-uselistorder', 'yaml2obj', 'intrinsics_gen', 'omp_gen', 'acc_gen', 'diagtool', 'clang', 'clang-format', 'clang-offload-bundler', 'clang-offload-wrapper', 'clang-scan-deps', 'clang-repl', 'clang-rename', 'clang-refactor', 'clang-cpp', 'clang-check', 'clang-extdef-mapping', 'clang-apply-replacements', 'clang-reorder-fields', 'modularize', 'clang-tidy', 'clang-change-namespace', 'clang-doc', 'clang-include-fixer', 'find-all-symbols', 'clang-move', 'clang-query', 'pp-trace', 'clangd', 'libclang', 'clang-tablegen-targets']
    
    A full log can be found at /home/ryan/sourcebuilds/hdoc/build/meson-logs/meson-log.txt
    

    Packages installed: llvm (13.0.1), llvm-libs (13.0.1), libc++ (13.0.1), clang (13.0.1), cmake (3.23.2)

    I have two theories for this: either meson is trying to use gcc / g++ as the compilers instead of clang, since those are the "found compilers" (no idea if this is a problem), or the clang package in the Arch repo doesn't supply this module or something. There are no other clang-related packages available on the repos, though the package information does reference a package named clang-tools-extra, which doesn't exist.

    Any idea how to solve this?

    opened by superrm11 2
  • Search page links to wrong anchor id

    Search page links to wrong anchor id

    Steps to reproduce:

    • Visit https://mcap.dev/docs/cpp/search.html
    • Search for filereader
    • Click the constructor (2nd search result)

    Expected behavior: Link goes to https://mcap.dev/docs/cpp/r703E2A4BE14D967D.html#F328627266D029A6

    Actual behavior: Link goes to https://mcap.dev/docs/cpp/r703E2A4BE14D967D.html#F328627266D029A6.html

    opened by jtbandes 2
  • [ERROR] Compilation failed when building from source

    [ERROR] Compilation failed when building from source

    When trying to build hdoc from source, I got a bunch of objects that failed to compile when running ninja -C build. It seems to get stuck at around the 60th and onward objects. It also just kinda freezes and compiles really slowly. The output looks like this (this is what it showed and then it just freezes):

    ninja: Entering directory `build'
    [62/95] Compiling C++ object 'subprojects/spdlog/[email protected]@[email protected]/src_spdlog.cpp.o'.
    FAILED: subprojects/spdlog/[email protected]@[email protected]/src_spdlog.cpp.o
    c++ -Isubprojects/spdlog/[email protected]@[email protected] -Isubprojects/spdlog -I../subprojects/spdlog -I../subprojects/spdlog/include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Wpedantic -std=c++17 -g -DSPDLOG_COMPILED_LIB -fPIC -MD -MQ 'subprojects/spdlog/[email protected]@[email protected]/src_spdlog.cpp.o' -MF 'subprojects/spdlog/[email protected]@[email protected]/src_spdlog.cpp.o.d' -o 'subprojects/spdlog/[email protected]@[email protected]/src_spdlog.cpp.o' -c ../subprojects/spdlog/src/spdlog.cpp
    {standard input}: Assembler messages:
    {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
    c++: fatal error: Killed signal terminated program cc1plus
    compilation terminated.
    [63/95] Compiling C++ object '[email protected]/src_frontend_Frontend.cpp.o'.
    FAILED: [email protected]/src_frontend_Frontend.cpp.o
    c++ [email protected] -I. -I.. -I../src -I../subprojects/cmark-gfm/src -I../subprojects/cmark-gfm/extensions -I../subprojects/spdlog/include -I../subprojects/tiny-process-library/tpl -Isubprojects/ctml -I../subprojects/ctml -Isubprojects/argparse -I../subprojects/argparse -Isubprojects/toml++ -I../subprojects/toml++ -Isubprojects/doctest -I../subprojects/doctest -I../subprojects/cereal/include -Isubprojects/cpp-httplib -I../subprojects/cpp-httplib -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Wpedantic -std=c++17 -g -fno-rtti -DCPPHTTPLIB_OPENSSL_SUPPORT -fPIC -pthread -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -isystem/usr/lib/llvm-12/include -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -MD -MQ '[email protected]/src_frontend_Frontend.cpp.o' -MF '[email protected]/src_frontend_Frontend.cpp.o.d' -o '[email protected]/src_frontend_Frontend.cpp.o' -c ../src/frontend/Frontend.cpp
    c++: fatal error: Killed signal terminated program cc1plus
    compilation terminated.
    [64/95] Compiling C++ object '[email protected]/src_indexer_Indexer.cpp.o'.
    FAILED: [email protected]/src_indexer_Indexer.cpp.o
    c++ [email protected] -I. -I.. -I../src -I../subprojects/cmark-gfm/src -I../subprojects/cmark-gfm/extensions -I../subprojects/spdlog/include -I../subprojects/tiny-process-library/tpl -Isubprojects/ctml -I../subprojects/ctml -Isubprojects/argparse -I../subprojects/argparse -Isubprojects/toml++ -I../subprojects/toml++ -Isubprojects/doctest -I../subprojects/doctest -I../subprojects/cereal/include -Isubprojects/cpp-httplib -I../subprojects/cpp-httplib -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Wpedantic -std=c++17 -g -fno-rtti -DCPPHTTPLIB_OPENSSL_SUPPORT -fPIC -pthread -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -isystem/usr/lib/llvm-12/include -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -MD -MQ '[email protected]/src_indexer_Indexer.cpp.o' -MF '[email protected]/src_indexer_Indexer.cpp.o.d' -o '[email protected]/src_indexer_Indexer.cpp.o' -c ../src/indexer/Indexer.cpp
    c++: fatal error: Killed signal terminated program cc1plus
    compilation terminated.
    [66/95] Compiling C++ object '[email protected]/src_indexer_Matchers.cpp.o'.
    FAILED: [email protected]/src_indexer_Matchers.cpp.o
    c++ [email protected] -I. -I.. -I../src -I../subprojects/cmark-gfm/src -I../subprojects/cmark-gfm/extensions -I../subprojects/spdlog/include -I../subprojects/tiny-process-library/tpl -Isubprojects/ctml -I../subprojects/ctml -Isubprojects/argparse -I../subprojects/argparse -Isubprojects/toml++ -I../subprojects/toml++ -Isubprojects/doctest -I../subprojects/doctest -I../subprojects/cereal/include -Isubprojects/cpp-httplib -I../subprojects/cpp-httplib -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Wpedantic -std=c++17 -g -fno-rtti -DCPPHTTPLIB_OPENSSL_SUPPORT -fPIC -pthread -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -isystem/usr/lib/llvm-12/include -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -MD -MQ '[email protected]/src_indexer_Matchers.cpp.o' -MF '[email protected]/src_indexer_Matchers.cpp.o.d' -o '[email protected]/src_indexer_Matchers.cpp.o' -c ../src/indexer/Matchers.cpp
    c++: fatal error: Killed signal terminated program cc1plus
    compilation terminated.
    

    Any help would be awesome. Regards

    opened by oraqlle 2
  • Unable to delete my account

    Unable to delete my account

    Hi! I was trying to delete my account and i don't see any option like that from my user dashboard - what should i do to make my account removed from service?

    opened by PsiksSimteract 2
  • macOS support

    macOS support

    The build system does not support compiling to UNIX like OSs like macOS. The prebuilt binaries are also only distributed for Linux. This makes working with hdoc impossible on macOS.

    Are there plans to support it?

    opened by aydwi 1
  • Way to add examples to documentation

    Way to add examples to documentation

    Feature request:

    The only thing stopping me from fully adopting hdoc is the inability to add nicely formatted code examples. Ideally this would take the form of something like Doxygens:

    \code{.cpp}
    [[magic import example.cpp]]
    \endcode 
    
    opened by ConorWilliams 2
  • Ability to hide or change giant

    Ability to hide or change giant "hdoc" title in the sidebar

    Another change that I keep in a hdoc patch is to remove this large "hdoc" link from the sidebar:

    image

    I'm not against having a link back to hdoc.io to make the tool discoverable (and there already is one in the footer), but it doesn't need to be the largest link on the page and prominently displayed above the title of the actual project being documented. 😄

    opened by jtbandes 2
  • Ability to exclude symbols/namespaces by regex match

    Ability to exclude symbols/namespaces by regex match

    Feature request: I would like to be able to exclude certain symbols, or symbols under certain namespaces, from the documentation and search index.

    This is one of the only remaining things I have to maintain in a patch: https://github.com/foxglove/mcap/blob/a85bd00295255b134f3083efbc5d2274294a83df/cpp/hdoc.patch

    It would be great to specify an exclusion pattern in the config file, preferably using regular expressions for maximum flexibility. As an example:

    [ignore]
    ignore_records = "^(.*::)?internal::.*$"
    ignore_functions = "^(.*::)?internal::.*$"
    
    opened by jtbandes 3
Releases(1.3.0)
The modern documentation tool for C++.

hdoc: the modern documentation tool for C++ See hdoc.io for more details. Usage documentation is hosted at hdoc.io/docs. An important notice about thi

hdoc 170 Aug 2, 2022
Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:

sol2 sol2 is a C++ library binding to Lua. It currently supports all Lua versions 5.1+ (LuaJIT 2.0+ and MoonJIT included). sol2 aims to be easy to use

The Phantom Derpstorm 3.1k Aug 1, 2022
An operating system. Its main goal? Readable code, developer experience and documentation.

OS Dependencies Required for development. sudo apt install build-essential nasm grub-pc-bin grub-common xorriso Required for building cross-compiler.

Stijn Rogiest 2 Jun 20, 2022
Tube_gateways - Information and Documentation on Tube's Zigbee Gateways

Tube's Zigbee Gateways Information and documentation on Tube's Zigbee Gateways. Pre-assembed hardware devices can be purchased from https://www.tubesz

null 139 Jul 25, 2022
Documentation and code for rooting and extending a Bosch car head unit (lcn2kai)

Rooting Bosch lcn2kai Headunit My Nissan Xterra came with a (for the time) modern head unit that has a touch screen, built-in navigation, backup camer

null 329 Jul 24, 2022
pre-built coreboot images and documentation on how to flash them for Thinkpad Laptops

Skulls - not quite Heads pre-built coreboot images with an easy installation process Skulls makes it easy to install an unlocked, up-to-date and easy

Martin Kepplinger 473 Jul 29, 2022
A modern day direct port of BOOM 2.02 for modern times. Aiming to tastefully continue the development of BOOM, in the style of TeamTNT.

ReBOOM ReBOOM is a continuation of the BOOM source port, version 2.02. what is it ReBOOM is a source port, directly ported from BOOM 2.02 with additio

Gibbon 12 Jul 27, 2022
C++ game engine inspired by quake. Modern rendering and quake mapping tool integration.

Nuake Feel free to join the discord server for updates: What is it Nuake is a game engine written from scratch by myself. It is not meant to be a end-

Antoine Pilote 23 Jul 23, 2022
A modern-day Boss Key software tool. Switch instantly from work to play & play to work with Bosky.

Bosky By: Seanpm2001, Bosky-dev Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af Afrika

Sean P. Myrick V19.1.7.2 1 Nov 11, 2021
6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.

6D - Pose Annotation Tool (6D-PAT) For detiled explanations checkout the WikiPage. What is it? With 6D-PAT you can create 6D annotations on images for

Florian Blume 64 Aug 4, 2022
C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library

Build Status Travis CI VM: Linux x64: Raspberry Pi 3: Jetson TX2: Backstory I set to build ccv with a minimalism inspiration. That was back in 2010, o

Liu Liu 6.9k Jul 30, 2022
Header-only, event based, tiny and easy to use libuv wrapper in modern C++ - now available as also shared/static library!

Do you have a question that doesn't require you to open an issue? Join the gitter channel. If you use uvw and you want to say thanks or support the pr

Michele Caini 1.5k Jul 30, 2022
A library for interactive command line interfaces in modern C++

cli A cross-platform header only C++14 library for interactive command line interfaces (Cisco style) Features Header only Cross-platform (linux and wi

Daniele Pallastrelli 826 Aug 3, 2022
Activity Indicators for Modern C++

Highlights Thread-safe progress bars and spinners Header-only library. Grab a copy of include/indicators. Single-header version in single_include/indi

Pranav 2.1k Jul 30, 2022
Table Maker for Modern C++

Source for the above image can be found here Table of Contents Quick Start Formatting Options Style Inheritance Model Word Wrapping Font Alignment Fon

Pranav 1.3k Jul 31, 2022
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all

concurrencpp, the C++ concurrency library concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily

David Haim 993 Jul 28, 2022
A modern, portable, easy to use crypto library.

Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more. It is a portable, cross-compilable, i

Frank Denis 10.3k Aug 9, 2022
Fast CSV parser and writer for Modern C++

Table of Contents CSV Reader Performance Benchmark Reader API CSV Writer Writer API Compiling Tests Generating Single Header Contributing License CSV

Pranav 287 Jul 19, 2022
A modern C++ library for reading, writing, and analyzing CSV (and similar) files.

Vince's CSV Parser Motivation Documentation Integration C++ Version Single Header CMake Instructions Features & Examples Reading an Arbitrarily Large

Vincent La 577 Aug 1, 2022
A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)

Catch2 v3 is being developed! You are on the devel branch, where the next major version, v3, of Catch2 is being developed. As it is a significant rewo

Catch Org 15.4k Aug 1, 2022
A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)

Catch2 v3 is being developed! You are on the devel branch, where the next major version, v3, of Catch2 is being developed. As it is a significant rewo

Catch Org 15.4k Aug 8, 2022
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

EnTT is a header-only, tiny and easy to use library for game programming and much more written in modern C++. Among others, it's used in Minecraft by

Michele Caini 7k Aug 9, 2022
A lightweight game engine written in modern C++

Halley Game Engine A lightweight game engine written in C++17. It has been used to ship Wargroove, a turn-based strategy game, on Windows, Mac (experi

Rodrigo Braz Monteiro 3.1k Jul 30, 2022
Modern C++14 library for the development of real-time graphical applications

CI Community Support bs::framework is a C++ library that aims to provide a unified foundation for the development of real-time graphical applications,

null 1.7k Jul 29, 2022
A modern cross-platform low-level graphics library and rendering framework

Diligent Engine A Modern Cross-Platform Low-Level 3D Graphics Library Diligent Engine is a lightweight cross-platform graphics API abstraction library

Diligent Graphics 2.4k Aug 1, 2022