1、VScode 中 Clangd 使用
VScode 中 Clangd 优缺点
优点
占用系统资源确实比 C/C++ 少了很多,无论是 CPU 还是 内存的使用。(最重要)
缺点
操作相较于 C/C++ 确实也繁琐一点。
总结一下,就是对于大型项目来说,使用 clangd 能够明显降低系统资源的占用,能够减少出现系统卡顿的情况,不过使用门槛较高。C/C++ 更适合小项目的开发,使用起来更加便利,能够更好的进行调试。
2、VScode 中 Clangd 使用
- Linux 下 clangd 安装
操作系统为 ubuntu20.04
官网说明地址: Getting started
在系统的源里面,并被有找到 clangd13 的软件,安装 12 版本需要降级 gcc 。遂采用直接下载可执行的方式进行
拷贝到环境变量所在的路径的方式。
- 通过官方 github 官方 13 地址下载 zip 包。解压后,文件夹如下
-
将 bin目录下,拷贝至 /usr/local/bin。将 lib 目录下,拷贝至
/usr/local/lib。具体路径可以根据环境变量自由选择。 -
检查是否已经安装成功。终端内敲击 clangd --version 出现类似内容,即代表安装成功。
3、VScode 下 clangd 插件安装
在应用市场中,直接搜索 clangd 安装即可。
clangd 如果没有指定 compile_commands.json
位置,会在工程路径下进行查找,如需单独指定可以添加以下配置项 --compile-commands-dir=${workspaceFolder}/build/
compile_commands.json 文件生成
直接借用了下这位大佬的博客 compile_commands.json 文件生成 随时联系,可以删除。
compile_commands.json 文件能够有效提高一些工具(比如说ccls1, vscode2)的代码跳转、补全等功能。 因此,本文将会说明如何生成 compile_commands.json 文件,特别是使用 makefile 的老工程。
cmake工程
方法1、cmake工程生成 compile_commands.json 文件比较简单,定义 CMAKE_EXPORT_COMPILE_COMMANDS 即可。
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1
方法2、在CMakeLists.txt中添加 set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 也可以达到上面的效果。
makefile工程
不过很多(旧的)工程都是用 makefile 来编译的,没有现成的选项生成 compile_commands.json 文件。 虽然也可以使用 ctags, gtags 等,但是跳转其实不是很准确。 我们可以通过 Bear 来生成,而且不需要改动代码。 具体Bear的安装这里就不赘述了,按照 官方文档 来即可。 安装之后,执行以下命令即可生成:
安装bear命令:
sudo apt install bear
生成compile_commands.json文件
bear 编译命令 # 比如说 bear make
也就是在原有编译命令之前加上 bear 即可,一般都是 bear make 。 生成之后我们就可以愉快地享受更精准的跳转和补全了。😊 ✌️
其中compile_commands.json
文件中的部分内容为:
[
{
"arguments": [
"gcc",
"-c",
"-I./include",
"-o",
"test",
"test2.c"
],
"directory": "/home/zhaokaiyue/Desktop/test",
"file": "test2.c"
},
{
"arguments": [
"gcc",
"-c",
"-I./include",
"-o",
"test",
"main.c"
],
"directory": "/home/zhaokaiyue/Desktop/test",
"file": "main.c"
}
]
记录的是编译的参数和路径、名称等等
非原编译环境调整
有的时候不同模块使用的编译环境是不同的,但是想在同一开发机上编码? 其中一种方法是远程开发(比如说vscode remote3),另外一种就是使用 docker 。 代码checkout在同一台开发机,不同编译环境对应不同docker镜像,代码以volume挂载。 这样可以避免编译的交叉影响,省去代码的同步以及日后编译机的裁撤。
不过编译环境的库依赖可能会冲突,所以在开发机上需要存放到不同的目录。 因此生成的 compile_commands.json 文件中的路径需要调整。 我们先通过 -o 选项生成一个备份文件:
bear --append -o compile_commands_org.json 编译命令
4、github release文件下载
1、在下载clangd文件过程中是在github的release文件上,使用安装是比较缓慢的,因此提供如下方式通过代理的方式进行下载:
github下载release文件:https://d.serctl.com