Compilation database compile_commands.json

A compilation database is a JSON-formatted file named compile_commands.json that contains structured data about every compilation unit in your project.

PlatformIO Core (CLI) supports generating of compilation database using pio run --target command and compiledb target. For example,

> pio run -t compiledb

A default path for compile_commands.json is “build_dir/envname”. You can override this path with Advanced Scripting and COMPILATIONDB_PATH environment variable. For example, generate compile_commands.json in a root of project:

platformio.ini:

[env:myenv]
platform = ...
board = ...
extra_scripts = post:extra_script.py

extra_script.py:

import os
Import("env")

env.Replace(COMPILATIONDB_PATH=os.path.join("$PROJECT_DIR", "compile_commands.json"))