Skip to main content

Compile Commands Database GENerator

PyPI status PyPi version PyPI pyversions GitHub license

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

Latest PyPi release

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": "ccdgen",
            "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 and sys.
  • This script relies on make echoing the compiler commands it runs to stdout. If compiler commands are prefixed in the Makefile with @ or make 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 and Windows 10.

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.

Metadata

Release files for ccdgen 0.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for ccdgen 0.0.11
File Interpreter ABI Platform
ccdgen-0.0.11-py3-none-any.whl Python 3 none any Details

Release files / ccdgen-0.0.11-py3-none-any.whl

Download URL ccdgen-0.0.11-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e62685e88edf71b6afe629df5d8b92c14aee493df00f507e12ebca827181d10
BLAKE2b-256 checksum
How to use checksums
5aa1dc0b7f64ce6c6939792745ea8f6a84fba4bb33b81914ef0a186c9620b54b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.0

Release history Release notifications | RSS feed

This release

0.0.11 This release

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page