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",