clangd能提供更好的补全和提示,自带检查一些warning的问题,可以减少大家未来找存在的warning的时间。经过配置可以在unittest和timetest中也实现自动补全,平均速度比vscode c/c++插件更快。
安装clangd 后端
sudo apt-get install clangd
安装clangd 前端
在插件市场搜索clangd。安装即可。注意c/c++可以不用卸载,否则调试可能会有点问题。
修改基础配置
-
在project folder下建立.vscode文件夹,创建settings.json文件。如下图 -
settings.json内容如下(注意本地可能需要也配置clangd.arguments否则可能会有问题,陈天浩就有这个问题)
{
"files.associations": {
"iostream": "cpp",
"intrinsics.h": "c",
"ostream": "cpp",
"vector": "cpp"
},
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"C_Cpp.errorSquiggles": "Disabled",
"C_Cpp.intelliSenseEngineFallback": "Disabled",
"C_Cpp.intelliSenseEngine": "Disabled",
"C_Cpp.autocomplete": "Disabled",
"clangd.path": "/usr/bin/clangd",
"clangd.arguments": [
"--log=verbose",
"--pretty",
"--all-scopes-completion",
"--completion-style=bundled",
"--cross-file-rename",
"--header-insertion=iwyu",
"--header-insertion-decorators",
"--background-index",
"--clang-tidy",
"--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*",
"-j=2",
"--pch-storage=disk",
"--function-arg-placeholders=false",
"--compile-commands-dir=build"
],
}
生成compile_commands.json文件
确保项目能够正常编译的前提下
cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. -G 'Unix Makefiles'
之后在build目录下就会生成对应的compile_commands.json,格式如下。请务必确保存在compile_commands.json文件,这是clangd补全依赖文件,否则会失效。
[
{
"directory": "",
"command": "",
"file": "",
},
]
生成结束后可能需要手动启动reload window或者使用manually activate extension。之后每次打开project一般会自动开起。
可以通过ps -ef | grep clang 查看是否存在进程
基本效果
补全
warning提醒
自动修改存在问题
注意事项
- 使用后最好使用下图close remote关闭,否则后台可能有进程未关闭
- 进程编译的时候,clangd会自动重新生成缓存,会占用较大的硬盘空间可能需要定时清理
|