ccls和clangd代码补全引擎在VS Code中怎么配置

夜辰同学_7745

夜辰同学_7745

2026-10-01

333人浏览

原创

clangd 是当前唯一推荐的 c/c++ 语言服务器,因 ccls 已于 2023 年停止维护,存在崩溃、跳转失败、高 cpu 占用及对 c++20 等新特性支持滞后等问题;clangd 由 llvm 官方维护,lsp 实现成熟,支持异步后台索引,且被 vs code、clion、neovim 等主流工具默认集成。

ccls和clangd代码补全引擎在vs code中怎么配置

ccls 已基本被弃用,当前应优先选 clangd;ccls 在 2023 年后停止维护,VS Code 中启用后常出现崩溃、跳转失败、高 CPU 占用等问题,而 clangd 是 LLVM 官方维护、LSP 实现最成熟的 C/C++ 语言服务器。

为什么 clangd 是唯一推荐选项

clangd 不仅是 VS Code 官方文档明确推荐的 C/C++ 语言服务器,也是 CLion、Neovim(通过 nvim-lspconfig)、Zed 等主流工具默认集成的后端。ccls 虽曾因内存占用低被部分嵌入式项目选用,但其对 C++20 模块、模板推导、宏展开等新特性的支持已严重滞后——比如 std::span 的类型推导在 clangd 中能正确补全,在 ccls 中大概率返回 unknown type。

  • clangd 自带 --background-index,可异步索引整个项目,不阻塞编辑
  • ccls 的 index 命令需手动触发,且索引过程常卡死在 parseInclude 阶段
  • VS Code 插件市场中 ccls 扩展已下架,仅存的第三方版本无更新记录(最后提交为 2022 年)

clangd 插件安装与冲突规避

VS Code 中不能同时启用 C/C++(ms-vscode.cpptools)和 clangd 插件,二者会争夺同一语言服务器端口并导致跳转失效或补全空白。

VS Code Node
VS Code Node

通过作为 OpenClaw 节点连接的 VS Code/Cursor IDE 操作代码,提供 40 多种命令,涵盖文件操作、语言智能、Git、测试等功能。

下载
  • 按 Ctrl + Shift + X 打开扩展面板,搜索 C/C++,禁用所有相关扩展(包括 C/C++ Themes、C/C++ Extension Pack)
  • 再搜索 clangd,安装由 clangd 官方发布的扩展(发布者为 clangd,非个人账号)
  • 若已安装过 cpptools 且未禁用,重启 VS Code 后打开 C++ 文件时,状态栏右下角会显示 cpptools is active —— 此时 clangd 不会启动

compile_commands.json 必须存在且路径正确

clangd 依赖 compile_commands.json 获取每个源文件的完整编译参数(含 -I、-D、--std= 等),缺失或路径错位会导致头文件找不到、宏未定义、标准库类型无法识别等现象,典型错误如:'vector' file not found 或 no member named 'size' in 'std::string'。

  • CMake 项目:编译时加 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON,例如 cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON,生成的 compile_commands.json 默认在 build/ 目录下
  • Makefile 项目:用 bear 生成,执行前先 make clean,再运行 bear -- make(bear 3.0+)
  • 配置 clangd 启动参数时,必须显式指定 --compile-commands-dir,例如:"clangd.arguments": ["--compile-commands-dir=${workspaceFolder}/build"]

交叉编译项目要重定向 clangd 和 clang 路径

直接使用系统自带的 clangd 二进制处理 ARM/STM32/RISC-V 项目,会导致目标平台头文件路径错乱、内建宏(如 __ARM_ARCH_7A__)未定义,最终表现为所有硬件寄存器访问报错、CMSIS 头文件红色波浪线。

  • 不要改 PATH,而是在 .vscode/settings.json 中硬编码路径:"clangd.path": "/opt/gcc-arm-none-eabi/bin/clangd"
  • 确保该 clangd 与你交叉编译链中的 clang 版本一致(例如都来自 LLVM 16)
  • 若用 NDK,路径类似:"clangd.path": "${env:ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/clangd"
  • 验证方式:在终端中运行该路径下的 clangd --version,输出应包含目标三元组,如 armv7a-linux-androideabi

最容易被忽略的是 compile_commands.json 中的命令是否真实可用——它可能记录了绝对路径的旧编译器(如 /usr/bin/arm-gcc-9),而你当前环境只有 /opt/gcc-arm/bin/arm-gcc。此时 clangd 会静默失败,不报错也不补全。务必打开该 JSON 文件,检查任意一条 command 字段能否在 shell 中直接粘贴执行成功。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vs code clang

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1235

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

2552

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1869

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1707

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2567

12

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1798

14

vscode用途介绍
vscode用途介绍

Visual Studio Code(VSCode)是一款由 Microsoft 开发的多功能文本编辑器,适用于各种编程语言。作为一款开源软件,VSCode 拥有代码高亮、自动补全、调试、Git 集成等强大功能,成为程序员不可或缺的工具。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1222

10

vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1096

8

vscode设置中文界面不生效解决方法
vscode设置中文界面不生效解决方法

vscode设置中文界面不生效解决方法:安装中文语言包、通过命令面板设置语言、检查 locale.json 设置、重新安装中文语言包、检查 VSCode 版本和更新、排除插件冲突、检查系统语言设置、查看 VSCode 日志和错误消息、重置 VSCode 设置、查看官方文档和社区支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

454

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Codebuddy 插件
Codebuddy 插件

共0课时 | 0人学习

Fitten Code官方手册
Fitten Code官方手册

共0课时 | 0人学习

3分钟内将Xdebug安装到PHP
3分钟内将Xdebug安装到PHP

共1课时 | 160人学习