现在很多不少代码分析补全工具(类似clangd)需要用到compile_commands.json。如果是CMake项目可以很容易生成这个文件,不过大部分比较旧的项目是基于Makefile的,在生成这个文件的时候会比较麻烦。
从stackoverflow上面查到一个方便命令。
make --always-make --dry-run \
| grep -wE 'gcc|g\+\+' \
| grep -w '\-c' \
| jq -nR '[inputs|{directory:".", command:., file: match(" [^ ]+$").string[1:]}]' \
> compile_commands.json
据说用compiledb也是不错的选择。