前期概要
vs code 连接 wsl 远程开发,c/c++ cpptools 插件容易终端卡顿,内存耗尽。
差异区别
- clangd:增量索引 + 后台索引(--background-index),首次建索引后跳转/重命名接近瞬时,rss 通常比 cpptools 低,跳转定义/引用准确率高,适合大型代码量开发场景
- cpptools:常驻 ast 缓存,10 万行以上项目容易吃 2gb+ 内存,wsl2/远程开发下易卡顿甚至 oom,补全延迟可达 500ms+,适合需要断点/变量/调用栈的场景
流程对比
cpptools:vs code 扩展宿主 ↔ cpptools-srv(原生后台进程)↔ intellisense 引擎,走 lsp(json-rpc)
clangd:vs code clangd 扩展 ↔ clangd 独立进程 ↔ clang 前端(llvm),走标准 lsp
维度 | cpptools intellisense | clangd |
|---|---|---|
解析内核 | 微软自研语义引擎(非编译器) | clang 编译器前端(llvm) |
编译参数来源 | c_cpp_properties.json 手配 / 自动探测 / provider | compile_commands.json 强制依赖 |
ast 可信度 | 近似,复杂宏/模板易偏 | 与 clang 编译一致 |
索引存储 | ipch + tu cache(内存 lru) | .cache/clangd 持久 idx + 后台索引 |
静态分析 | 自带基础诊断 | 原生 clang-tidy / clang-format |
大型项目 | 常驻内存高、易 oom | 增量索引、内存可控 |
调试 | 自带强大 debug adapter | 不负责调试 |
配置流程
1.禁用c/c++插件
直接禁用或卸载插件,避免冲突

也可以修改配置文件settings.json禁用,该部分不一定存在
// setting.json
{
"c_cpp.intellisenseengine": "disabled"
}2.安装clangd
扩展里搜索对应插件直接安装

首次还需要下载 clangd 语言服务器二进制
ctrl + shift + p 输入以下内容,哪个能下载选哪个,速度较慢
clangd:reset language server clangd:download language server

linux环境通常自带,但可能版本较低,可用自己下载新版本
sudo apt-get install clangd

可用在vs code里看到ide实际使用的clangd版本

3.编译配置
clangd 依赖 compile_commands.json,编译要生成此文件才能生效,本质上它是一个"编译器视角"的标准化快照。
compile_commands.json 是一个"编译命令数据库",它记录了项目中每个源文件是用什么命令编译的——包括用了什么编译器、什么标准、哪些头文件路径、定义了哪些宏。
cmkae
# 方法一:命令行 cmake -dcmake_export_compile_commands=on .. # 方法二:写在 cmakelists.txt 里 set(cmake_export_compile_commands on) # 方法三:用 cmake-tools 扩展,在 settings.json 里 "cmake.exportcompilecommands": true
make
bear -- make # 拦截 make 的编译命令,自动生成 bear -- make clean all
到此这篇关于vs code clangd 替换 c/c++插件的文章就介绍到这了,更多相关clangd替换c++插件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论