1. CompileDB
https://github.com/nickdiego/compiledb
2. GNU Make
make --always-make --dry-run \
| grep -wE 'gcc|g\+\+' \
| grep -w '\-c' \
| jq -nR '[inputs|{directory:".", command:., file: match(" [^ ]+$").string[1:]}]' \
> compile_commands.json
3. Bear
https://github.com/rizsotto/Bear