Makefile生成compile_commands.json


现在很多不少代码分析补全工具(类似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也是不错的选择。


Author: 蒋璋
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source 蒋璋 !