在 vscode 中配置 clangd 来进行南大 PA 实验
前提
我真的是太喜欢 vscode 了,所以几乎任何项目都想用 vscode 来开发。clangd 相比官方的 C/C++ 插件不仅速度更快,而且提示也更智能。所以 vscode + vim 插件 + clangd 现在是我的 c++ 开发首选。
由于南大 PA 的讲义并没有教我们配置任何 IDE 来进行开发,只是推荐我们使用原生 vim,这就给了我们很大的自由,来选择自己想要的开发工具。
本文介绍的是如何配置 vscode 和 clangd 来进行南大 PA 的实验。
0. 准备
南大 PA 是在 ubuntu 上进行开发,不过既然我们都使用了虚拟机和 vscode,那么就没必要在虚拟机里运行 vscode 了,可以直接在 windows 上运行 vscode,然后通过 ssh 连接虚拟机进行开发。
关于如何设置虚拟机来进行 ssh 连接可以参考:宿主机SSH连接VMware虚拟机(NAT模式)。
1. 安装 clangd 和 bear
vscode 里需要安装 clangd 插件。注意要选择在远程主机中安装。
如果已经安装了 vscode 官方的 C/C++ 插件,需要将其禁用,因为它会和 clangd 发生冲突。
ubuntu 中也需要安装 clangd:
|
|
clangd 在启动的时候会在项目根目录查找 compile_commands.json
文件,来索引整个项目的源文件。
这个文件在 cmake 下可以通过添加编译参数 -DCMAKE_EXPORT_COMPILE_COMMANDS=True
来自动生成。但是南大 PA 使用的是 Make 来管理项目,就需要用到 bear 这个软件来生成。
安装 bear:
|
|
2. 生成 compile_commands.json
make
指令,编译运行完 NEMU 之后再回来。南大 PA 代码其实是由好几个子项目(每一个子项目都是一个子目录)组成的。每一个子项目都由自己的 Makefile 管理。因此需要将 vscode 在子目录中打开:
|
|
这里只以 NEMU 为例,后面对于不同的子项目,都需要单独用 vscode 打开,然后生成单独的 compile_commands.json
文件。
接下来使用 bear 来生成 compile_commands.json
文件:
|
|
执行完该指令后,根目录里就会自动生成 compile_commands.json
文件,内容大致如图:
接着关闭 vscode 再打开,clangd 就可以正常运作了。
如上图所示,会实时进行报错提示。头文件下下方有下划线,代表可以索引到头文件,按下 ctrl 点击头文件就可以进行跳转。
结束
祝大家在 PA 里玩得愉快!