===================
Clang-Doc
===================

.. contents::

.. toctree::
   :maxdepth: 1

:program:`clang-doc` is a tool for generating C and C++ documenation from 
source code and comments. 

The tool is in a very early development stage, so you might encounter bugs and
crashes. Submitting reports with information about how to reproduce the issue
to `the LLVM bugtracker <https://llvm.org/bugs>`_ will definitely help the
project. If you have any ideas or suggestions, please to put a feature request
there.

Use
===

:program:`clang-doc` is a `LibTooling
<https://clang.llvm.org/docs/LibTooling.html>`_-based tool, and so requires a
compile command database for your project (for an example of how to do this 
see `How To Setup Tooling For LLVM
<https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html>`_).

By default, the tool will run on all files listed in the given compile commands
database:

.. code-block:: console

  $ clang-doc /path/to/compile_commands.json

The tool can also be used on a single file or multiple files if a build path is
passed with the ``-p`` flag.

.. code-block:: console

  $ clang-doc /path/to/file.cpp -p /path/to/build

Output
======

:program:`clang-doc` produces a directory of documentation. One file is produced
for each namespace and record in the project source code, containing all
documentation (including contained functions, methods, and enums) for that item.

The top-level directory is configurable through the ``output`` flag:

.. code-block:: console

  $ clang-doc -output=output/directory/ compile_commands.json

Configuration
=============

Configuration for :program:`clang-doc` is currently limited to command-line options.
In the future, it may develop the ability to use a configuration file, but no such
efforts are currently in progress.

Options
-------

:program:`clang-doc` offers the following options:

.. code-block:: console

  $ clang-doc --help
  USAGE: clang-doc [options] <source0> [... <sourceN>]

  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:

    --doxygen                   - Use only doxygen-style comments to generate docs.
    --extra-arg=<string>        - Additional argument to append to the compiler command line
    --extra-arg-before=<string> - Additional argument to prepend to the compiler command line
    --format=<value>            - 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=<string>           - Directory for outputting generated files.
    -p=<string>                 - Build path
    --project-name=<string>     - Name of project.
    --public                    - Document only public declarations.
    --repository=<string>       -
                                  URL of repository that hosts code.
                                  Used for links to definition locations.
    --source-root=<string>      -
                                  Directory where processed files are stored.
                                  Links to definition locations will only be
                                  generated if the file is in this dir.
    --stylesheets=<string>      - CSS stylesheets to extend the default styles.

The following flags shoud only be used if ``format`` is set to ``html``:
- ``repository``
- ``source-root``
- ``stylesheets``
