.. contents:: :local:
compdb is a command line tool to manipulates compilation databases.
A compilation database is a database for compile options,
it has records of which compile options are used to build the files in a project.
An example of compilation database is the
JSON Compilation Database
compdb aims to make it easier for you to run tools on your codebase
by spoon-feeding you the right compile options.
compdb is not so much about generating the initial compilation database,
this, is left to other tools, such as
It is only a glue between the initial compilation database and your tool(s).
With the proliferation of Clang-based tools, it has become apparent that the compile options are no longer useful uniquely to the compiler.
Standalone tools such as clang-tidy or text editors with libclang integration have to deal with compile options.
Examples of such tools, dealing with compilation databases are: irony-mode, rtags and ycmd_.
Based on this evidence,
compdb came to life.
A tool that has knowledge of the compile options and can share it
both to inform the text editor and to run clang based tool from the shell.
Install with pip_:: pip install compdb From Github, as user:: pip install --user git+https://github.com/Sarcasm/compdb.git#egg=compdb Generate a compilation database with header files
Assuming a build directory
build/, containing a
a new compilation database, containing the header files,
can be generated with::
compdb -p build/ list > compile_commands.json
Running the tests
To run the tests, type:: python -m tests Or:: tox --skip-missing-interpreters For regression tests on a few open source projects:: cd tests/regression/headerdb make [all|help] Contribute ---------- Contributions are always welcome! Try to be consistent with the actual code, it will ease the review. License ------- This project is licensed under the MIT License. See LICENSE.txt for details. Acknowledgments --------------- * repo_: for its ubiquitous command line interface, which served as an inspiration * scan-build_: for the clear Python package design * git_: for the ``git-config`` API * `julio.meroh.net`_: for the interesting article serie on `CLI design`_ .. _clang-tidy: http://clang.llvm.org/extra/clang-tidy/ .. _CLI design: https://julio.meroh.net/2013/09/cli-design-series-wrap-up.html .. _compdb: https://github.com/Sarcasm/compdb .. _git: https://git-scm.com/ .. _irony-mode: https://github.com/Sarcasm/irony-mode .. _julio.meroh.net: https://julio.meroh.net/ .. _JSON Compilation Database: http://clang.llvm.org/docs/JSONCompilationDatabase.html .. _libclang: http://clang.llvm.org/doxygen/group__CINDEX.html .. _pip: https://pip.pypa.io/ .. _repo: https://gerrit.googlesource.com/git-repo/ .. _rtags: https://github.com/Andersbakken/rtags .. _scan-build: https://github.com/rizsotto/scan-build .. _ycmd: https://github.com/Valloric/ycmd