Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + CMake)
与 VSCode 官方文档配置 相比拥有的优势
- Clangd 具有更优秀的性能,微软官方 Cpptools 的代码提示功能有明显延迟
- Clangd 提供更精准的「转到定义」、「重命名符号」、「自动添加头文件」等功能(Jetbrains 家大名鼎鼎的 CLion 也是基于 Clangd)
- Clang-Tidy 提供了强大的「静态检查」支持,并对于部分代码提供「快速修复」功能。详情请见 Clang-Tidy Checks。本文主要添加了对于「Google 开源项目风格指南」「Cpp Core Guidelines」和性能、潜在的 bug、移植性、现代 C++ 的检查
- 微软官方 Cpptools 仅提供 Debug 功能(也可以使用 CodeLLDB 插件进行调试)
vscode插件推荐
在官网安装 Visual Studio Code 后,安装如下拓展:
- clangd(必装,安装后建议通过它下载 clangd 二进制包,或者自己手动折腾安装)
- CodeLLDB(必装,也可以使用C/C++ 插件进行调试)
- CMakeTool(必装, CMake 插件)
- Catppuccin Noctis (我个人非常喜欢的一款主题)
- Error Lens(更直观的错误提示)
- Project Manager(收藏、识别和管理你的工作空间和项目文件夹)
- Vim(Vim 模拟器,不知道 vim 是什么不要安装)
- GitLens(Git插件,可选)
- Git Graph(Git插件,可选)
- GitHub Copilot(Github 开发的代码智能提示插件,不建议初学者使用)
注意:「C/C++」插件和「clangd」插件共存,VSCode 会提示发生冲突,请选择「Disable IntelliSense」
compiled_commands.json
clangd是基于 compile_commands.json 文件来完成对项目的解析,所以需要针对项目生成 compile_commands.json 文件。
cmake工程
如果通过 cmake 方式编译项目,在 CMakeLists.txt 文件中 添加 set(CMAKE_EXPORT_COMPILECOMMANDS ON)
,之后cd build && cmake ..
,可以发现在 build
目录下已经生成了 compile_commands.json
文件。
makefile工程
如果是基于 make
方式来编译,那么可以先安装 pip install compiledb
,之后在当前目录下运行 (a) compiledb -n make -C build
(b) compiledb make -C build
这两个命令中的其中一个来生成 compile_commands.json
文件,其中前者不会执行真正的 make 编译命令。
shell
$ pip install compiledb
$ compiledb -n make -C build