Clangd安装后需手动配置路径、禁用C/C++插件IntelliSense引擎、提供编译信息(如compile_commands.json或--query-driver),并确保clangd与clang版本一致,否则补全和跳转不可用。

Clang 安装完后,clangd 不会自动生效,必须显式配置路径、禁用冲突引擎、提供编译信息,否则补全和跳转基本不可用。
clangd.path 必须指向可执行文件,不能只写 clangd
VS Code 的 clangd.path 配置项要求是完整可执行路径,不是命令名。很多人写成 "clangd" 或 "clangd-15",结果插件启动失败,日志里只显示 “spawn clangd ENOENT”。
- Linux/macOS 查路径:运行
which clangd或find /usr -name clangd 2>/dev/null | head -1,取输出结果(如/usr/bin/clangd-15) - Windows(MSYS2):路径通常是
K:\msys64\clang64\bin\clangd.exe,注意反斜杠要写成正斜杠或双反斜杠 - 如果用 Homebrew 安装 LLVM,常见路径是
/opt/homebrew/opt/llvm/bin/clangd(Apple Silicon)或/usr/local/opt/llvm/bin/clangd(Intel)
必须禁用 C/C++ 插件的 IntelliSense 引擎
VS Code 默认启用 Microsoft 的 C_Cpp.intelliSenseEngine,它和 clangd 同时工作会导致符号重复、跳转错乱、CPU 占用飙升。这不是可选项,是硬性要求。
- 在 workspace 或 user
settings.json中加这一行:"C_Cpp.intelliSenseEngine": "disabled" - 不要写成
"Disabled"或false—— 只接受字符串"disabled" - 改完保存后,右下角会弹提示,点 “Disable IntelliSense” 才真正生效;不点的话配置只是“挂起”
没有 compile_commands.json?用 --query-driver 临时兜底
clangd 默认依赖项目根目录下的 compile_commands.json 来理解头文件路径、宏定义、标准版本等。没有它,连 #include <vector></vector> 都标红。
- 如果项目用 CMake,先运行
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON,再把build/compile_commands.json软链接到项目根目录:ln -sf build/compile_commands.json . - 如果没构建系统,可在
clangd.arguments中加--query-driver=/usr/bin/clang++(Linux/macOS)或--query-driver=K:/msys64/clang64/bin/clang++.exe(Windows),让 clangd 直接调用本地 clang++ 解析头文件 -
--query-driver有安全限制:clangd 默认只信任/usr/bin/*或/opt/llvm/bin/*下的驱动器,路径不符会报错query driver not allowed,需配合--allow-enabling-all启动(不推荐生产环境)
.clangd 文件比 settings.json 更灵活,但优先级更高
项目级配置写在 .clangd(YAML 格式,放项目根目录)比写进 VS Code 的 settings.json 更可靠:它不依赖编辑器,且能按路径条件差异化配置(比如对 test/ 目录关闭 clang-tidy)。
- 最简可用
.clangd示例:
CompileFlags: Add: [-std=c++20, -I./include] Diagnostics: ClangTidy: true
PathMatch 和 PathExclude 可用于条件匹配,避免全局误配clangd.arguments 中的参数优先级高于 .clangd,但 .clangd 支持更细粒度控制(如 per-directory 编译标志),实际项目建议以 .clangd 为主最容易被忽略的是 clangd 版本与 clang 编译器版本不一致——哪怕只差一个小版本(比如 clang-15 + clangd-14),也可能导致 __cpp_concepts 等特性识别失败,或者标准库头文件路径找不到。装完务必运行 clang --version 和 clangd --version 对齐主版本号。

















