前提
在VScode中写C++代码时,总会用到 C/C++ 这个插件,也就自然而然地使用了这个插件带来的代码跳转和代码提示功能。但是当代码变地很多时,就会变得非常慢。所以经过调查后弃用C/C++ 插件的这个功能,使用 clangd 这个插件来提示C++代码和跳转。
Clang 安装使用
安装步骤如下:
-
在VScode的extension中搜索 clangd 安装。
-
在settings中设置 clangd 二进制文件路径。如下图所示:
我这里显示的路径是VScode自动帮助我下载的 clangd 路径。就是当你下载好 clangd 插件后,它会自动检测你的环境中有没有安装 clangd ,如果没有它会在右下角提示你是否要下载 clangd ,如果走这条路的话,它会自动帮你下载并配置好路径。另一条路就是我们的环境中已经安装了 clangd ,那我们就就要将安装路径填在这里(clang官方下载地址)。
-
禁用C/C++插件的提示功能,并重启clangd 的服务。如下所示:
将default 改为disable 。然后ctrl+shift+p打开command palette,重启 language server。
-
关于 clangd 的一些配置选项说明如下:
在VScode中我们安装的是 clangd 插件,它的背后使用了 clangd 这个语言服务(也就是一个二进制文件),我们可以在VScode中设置一些参数传给这个 clangd 这个二进制文件,那么它都有什么可选项呢?
如果你走的是上面的第二条路径,在命令行输入
clangd --help-list-hidden
就可以看到它支持的参数;如果是VScode帮助你安装的,要进到安装目录下再输入这条命令就可以看到。展示如下:
太多了,一张图展示不了。我们选择其中比较重要的几条进行配置如下,将其添加到
setting.json
中:bash"clangd.arguments": [ "--log=verbose", // 生成更详细的日志 "--pretty", // 输出的json更美观 "--completion-style=detailed", // 详细的代码补全 "--clangd-tidy", // 使用clang-tidy进行代码静态检查 "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*", // 指定clang-tidy检查的规则 "-j=8", // 使用8个线程 "--background-index", // 后台索引 "--pch-storage=disk", // 使用disk存储PCH文件 "--function-arg-placeholders=false", // 函数参数不使用占位符 ]
注意事项
- 无论什么时候对 clangd 插件做修改后,都要重启 language server。
- 如果你选择让VScode自动帮助你下载 clangd ,然后一直显示无法下载,网络不好。配置下VScode的代理,在setting.json中添加下面的代理:
下载速度就会很快了。 - clangd 插件的使用依赖于你cmake工程时产生的 compile_commands.json 文件,如果cmake时没有输出这个文件,在
CMakeLists.txt
中添加set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
这行代码。或者在命令行中使用cmake时添加-DCMAKE_EXPORT_COMPILE_COMMANDS=on
。