The compilation database Swiss army knife
.. 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_
compdbaims to make it easier for you to run tools on your codebase by spoon-feeding you the right compile options.
compdbis not so much about generating the initial compilation database, this, is left to other tools, such as
ninja. 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,
compdbcame 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
compile_commands.json, 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
For regression tests on a few open source projects::
cd tests/regression/headerdb make [all|help]
Contributions are always welcome!
Try to be consistent with the actual code, it will ease the review.
This project is licensed under the MIT License. See LICENSE.txt for details.
julio.meroh.net: for the interesting article serie on
.. 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