生成compile_commands.json文件
文章目录
compile_commands.json
文件能够有效提高一些工具(比如说ccls1, vscode2)的代码跳转、补全等功能。
因此,本文将会说明如何生成 compile_commands.json
文件,特别是使用 makefile
的老工程。
cmake工程
cmake工程生成 compile_commands.json
文件比较简单,定义 CMAKE_EXPORT_COMPILE_COMMANDS
即可。
|
|
makefile工程
不过很多(旧的)工程都是用 makefile
来编译的,没有现成的选项生成 compile_commands.json
文件。
虽然也可以使用 ctags
, gtags
等,但是跳转其实不是很准确。
我们可以通过 Bear 来生成,而且不需要改动代码。
具体Bear的安装这里就不赘述了,按照 官方文档 来即可。
安装之后,执行以下命令即可生成:
|
|
也就是在原有编译命令之前加上 bear
即可,一般都是 bear make
。
生成之后我们就可以愉快地享受更精准的跳转和补全了。😊 ✌️
非原编译环境调整
有的时候不同模块使用的编译环境是不同的,但是想在同一开发机上编码?
其中一种方法是远程开发(比如说vscode remote3),另外一种就是使用 docker
。
代码checkout在同一台开发机,不同编译环境对应不同docker镜像,代码以volume挂载。
这样可以避免编译的交叉影响,省去代码的同步以及日后编译机的裁撤。
不过编译环境的库依赖可能会冲突,所以在开发机上需要存放到不同的目录。
因此生成的 compile_commands.json
文件中的路径需要调整。
我们先通过 -o
选项生成一个备份文件:
|
|
然后通过 compile_cmds_replace.sh
脚本替换依赖路径。
|
|
上面的脚本示例了如何把 XxxMod
依赖的库 svcfrm2
和 commlib
调整为开发机上对应库的路径。