Compilation Database Generator
Tool for generating Clang's JSON Compilation Database file for GNU
make-based build systems.
It's aimed mainly at non-cmake (cmake already generates compilation database)
large codebases. Inspired by projects like YCM-Generator and Bear,
but it's supposed to be faster (mainly with large projects), since it doesn't need a
clean build (as the current available tools do) to generate the compilation database
file, to achieve this it uses the make options such as -Bnk to extract the compile
commands. Also, it's more cross-compiling friendly than YCM-generator's fake-toolchanin
approach.
Installation
# pip install compiledb
- Supports Python 2.x and 3.x (for now, tested only with 2.7 and 3.6 versions)
- For bash completion support, add the content of
sh-completion/compiledb.bashfile to your.bashrcfile, for example. - ZSH completion coming soon :)
Usage
compiledb provides a make python wrapper script which, besides to execute the make
build command, updates the JSON compilation database file corresponding to that build
command, resulting in a command-line interface similar to Bear.
To generate compile_commands.json file using compiledb-generator's "make wrapper" script,
executing Makefile target all:
$ compiledb make
compiledb forwards all the options/arguments passed after make subcommand to GNU Make
command, so one can, for example, generate compile_commands.json using core/main.mk
as main makefile (-f flag), starting the build from build directory (-C flag):
$ compiledb make -f core/main.mk -C build
Even though, by default, compiledb make generates the compilation database and runs the
actual build command requested (acting as a make wrapper), the build step can be skipped using
the -n or --no-build options.
$ compiledb -n make
Also, compiledb base command can be used to parse compile commands from an arbitrary text
file (or stdin), assuming it has a build log (ideally generated using make -Bnwk command),
and generates the JSON Compilation database.
For example, to generate the compilation database from build-log.txt file, use the following
command.
$ compiledb --parse build-log.txt
Or even, to pipe make's output and print the compilation database to the standard output:
$ make -Bnwk | compiledb -o-
Testing / Contributing
I've implemented it basically because I needed to index some AOSP's modules for navigating
and studying purposes (after having no satisfatory results with current tools such as
YCM-Generator and Bear). So I've reworked YCM-Generator, which resulted in
compiledb-gen-parser and used successfully to generate compilation database for some AOSP
modules in ~1min running in a Docker container and then I've been able to use some
great tools such as:
Notice:
- Windows not supported yet (at least not tested yet in Cygwin/MinGW)
- Tested only on Linux (Arch Linux) so far
Patches are always welcome :)
License
GNU GPLv3
Metadata
Release files for compiledb 0.9.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| compiledb-0.9.2.tar.gz | 8.9 kB | Without provenance | Details for compiledb-0.9.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| compiledb-0.9.2-py3-none-any.whl | Python 3 | none | any | Details for compiledb-0.9.2-py3-none-any.whl |
Total release size: 20.5 kB
Release files / compiledb-0.9.2.tar.gz
| Download URL | compiledb-0.9.2.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
74df430f841a83054faa20c41caa33d09a4591e012fe194407e559ad86d8c4e2
|
|
BLAKE2b-256 checksum How to use checksums |
e650824e5256e7d32fc236d534aff93a6d8f9121fe427b5da296c510000289f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / compiledb-0.9.2-py3-none-any.whl
| Download URL | compiledb-0.9.2-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89a8f271ed6efe02373a90903f0106c2614c07df264f1d576b7c7ff015258aad
|
|
BLAKE2b-256 checksum How to use checksums |
f2c9093ebdee0b3d899185f8228b2eb9fc35c6ae3054244d441972c1e8b6a2a6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for compiledb 0.9.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.