clangd 是基于 Clang 编译器的 C/C++/Objective-C 语言服务器。
它提供类似 IDE 的功能,例如代码补全、跳转导航、重构和诊断,并可在支持 LSP(语言服务器协议)的编辑器中使用,如 VSCode、Neovim、Sublime 等。


  • 代码补全(Code completion)
    在你输入代码时,自动建议变量、函数和类型。

  • 跳转到定义 & 查找引用(Go-to-definition & Find references)
    一键跳转到符号的定义,或查找它在何处被使用。

  • 诊断与警告(Diagnostics & warnings)
    不用手动编译,编辑器中就能显示编译错误和警告。

  • 重构 & 代码操作(Refactoring & code actions)
    支持重命名符号、生成函数框架、自动修复 include 等。


请确保在项目根目录下有一个 compile_commands.json 文件。
👉 参考文档:JSON Compilation Database

CMake(2.8.5 及以上版本)支持在使用 Unix Makefile 构建时,通过设置 CMAKE_EXPORT_COMPILE_COMMANDS 选项来生成这个编译数据库。

但是也可以用Bear来生成。

brew install bear
bear -- make clean all

但是我在Mac平台下使用arm-none-eabi-gcc来进行交叉编译的时候,bear生成的compile_commands.json里只有[]

我懒得找解决方法,就直接用compiledb最后生成了compile_commands.json

在VSCode中Ctrl + Shift + P打开 Preferences: Open Settings(JSON)编辑settings.json

或手动去寻找:

  • Windows%APPDATA%\Code\User\settings.json
  • macOS$HOME/Library/Application Support/Code/User/settings.json
  • Linux$HOME/.config/Code/User/settings.json

关闭 C/C++ 扩展的默认IntelliSense:

"C_Cpp.intelliSenseEngine": "disabled",