C++ 的智能提示 IntelliSense 非常不准,我们可以使用 clangd
clangd 缺点就是配置繁琐,优点就是跳转和提示代码精准
开启 clangd 之后会提示你关闭 IntelliSense
1、安装插件 clangd
搜索第一个下载多的就是
2、配置 clangd 可执行程序路径
clangd 插件依赖 clangd 可执行程序,如果没安装 clangd 可自行百度安装,命令行运行下面命令可以知道自己是否已经安装了 clangd
clangd --version
设置——拓展——clangd
3、配置 vscode 的 setting.json 文件
追加
"clangd.arguments": ["--compile-commands-dir=${workspaceFolder}/build","--background-index","--clang-tidy","--log=verbose","--pretty","--function-arg-placeholders=true","--header-insertion-decorators","--header-insertion=never","--inlay-hints","-j=12"
]
这个配置,不同攻略都大同小异,但是我们要关注一个配置项
--compile-commands-dir=${workspaceFolder}/build
这个表示 clangd 将会在工作区目录(即左侧资源管理器根目录)的 build 目录下寻找 compile_commands.json,即 (下一章讲这个文件获取方式)
vscode 工作区/build/compile_commands.json
4、获取 compile_commands.json 文件
参考
C/C++工程生成编译数据库文件compile_commands.json-CSDN博客
不同的编译方式,使用不同的命令
拿到 compile_commands.json 后,把该文件放在第3章强调的 build 目录下即可,重启 vs code,(随便打开一个 C 文件)会看到下面栏自动生成索引
以及左边资源管理器自动生成 .cache 文件夹
5、特别提示
clangd 跳转准确的来源是 compile_commands.json 文件,里面记录了各个库函数的编译路径,拿到 compile_commands.json 文件后,需要看看里面的目录是不是有问题
比如里面有路径
-I/Users/test/openssl/include/
务必确保
/Users/test/openssl/include/
路径存在且有效,否则影响跳转准确率
像 cmake 是用 include_directories 指令调整头文件路径的,就需要修改 CMakeLists.txt
参考文档
如何配置C/C++补全环境? - 知乎
vscode配置clangd和clang-format_clangd vscode-CSDN博客