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!!