VS Code c++ & cmake & clangd 项目配置


C++ VSCode

本文主要介绍博主个人使用的 vs code c++配置。本配置用到了 llvm 的 clangd, 是 c++的 language server。
众所周知,Jetbrains 的 clion 也用的是 clangd 做后端,在 vscode 中基本可以提供完美的 c++代码补全,实时纠错等功能,实际使用体验接近 clion 等 IDE。

需要 vscode 插件:

c/c++ (需要安装好 c++编译开发环境)
clangd (需要提前安装好 clangd,详见 https://clangd.llvm.org/installation.html 加入 path,或在插件设置中设计 clangd 路径)
cmake tools

建议安装:

cmake (提供 CMakeLists.txt 的语法高亮)
clang-format (提供代码格式化功能)

配置

在 ./.vscode/settings.json 中:(实际的 json 文件中不能包含注释)

{
  "cmake.generator": "Ninja",
  //设置configure目标为Ninja,makefile, visiual studio等,相当于命令行 -G XXXX
  "cmake.configureSettings": {
    "xx1": "xxxxx",
    "CMAKE_EXPORT_COMPILE_COMMANDS": true
  },
  //相当于 -Dxx1="xxxxx" ,用于定义cmake配置里的变量
  //CMAKE_EXPORT_COMPILE_COMMANDS 将在后面等clangd用到
  "cmake.buildDirectory": "XXX",
  //设置build文件的位置,默认./build,如果更改需要更改clangd的配置(见下文)
  "cmake.buildArgs": ["XXXX"],
  //An array of additional arguments to pass to cmake --build.
  "cmake.environment": {
    "XXX": "xxxx"
  }
  //设置环境变量
}

其他 cmake 插件相关配置参考: https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/cmake-settings.md

clangd 会用到 cmake 生成的 compile_commands.json 作为实时编译检查的指令默认会在./和./build 查询,如果修改了 build directory,可以在配置文件中添加:

"clangd.arguments": [
        "-background-index",
        "-compile-commands-dir = YOUR_BUILD_DIRECTORY"
    ]

此时完成 cmake 配置并 configure 后编写代码应该能看到代码补全。

Debug:

在 ./.vscode/launch.json 中配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "NAME",
      "type": "cppdbg",
      "request": "launch",
      "preLaunchTask": "CMake: build",
      "program": "xxx",
      //编译出来的可执行文件位置
      "args": ["-arg1", "-arg2"],
      //可执行文件的args,按照数组添加,相当于运行 xxx -arg1 -arg2
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      //执行目录
      "environment": [],
      "externalConsole": false,
      "MIMode": "lldb"
      //选择gdb还是lldb等
    }
  ]
}

现在在文件中设置断点,按 F5 应该能启动调试了。

Enjoy Coding!!