Generates compilation databases by capturing standard output from Make
Project description
Compile Commands Database GENerator
About
A Python script to generate a compile_commands.json
database
by capturing the output of make
. This script was originally created to provide
compilation databases for make
based C/C++ projects in Visual Studio Code.
Installation
pip install ccdgen
Usage
python3 -m ccdgen --extensions <arguments...> -- <your build command>
Arguments:
Option | Default | Description |
---|---|---|
-h , --help |
Show help message and exit | |
-c , --compiler |
(auto detect) | Specify compiler |
-d , --dir |
./ | Working directory to run make from |
-e , --extensions |
Extension(s) for source files | |
-o , --output |
./compile_commands.json | Output file |
For example, to run make all
as the build command for a C project:
python3 -m ccdgen --extensions .c -- make all
Example Visual Studio Code task:
{
"version": "2.0.0",
"tasks": [
{
"label": "compile_commands.py",
"type": "shell",
"command": "python",
"osx": {
"command": "python3"
},
"args": [
"-m", "ccdgen",
"--extensions", ".c",
"--", "make", "all"
]
}
]
}
Limitations
- The script relies on the Python standard library modules
argparse
,json
,os
,subprocess
andsys
. - This script relies on
make
echoing the compiler commands it runs to stdout. If compiler commands are prefixed in the Makefile with@
ormake
is run in silent mode, the output cannot be captured. - The build must succeed to generate a full compilation database, though warnings are not a problem.
- Currently only tested with Python 3.10 on macOS Ventura.
Other Tools
- CMake (since version 2.8.5) can be used as is to generate
compile_commands.json
by adding-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
when calling it. This only works for Unix Makefile builds. - Bear is much more advanced tool for
generating compilation databases for
clang
tooling. macOS, Linux and FreeBSD are currently supported.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
ccdgen-0.0.2-py3-none-any.whl
(8.7 kB
view hashes)