VSCode + CMake + C++:配置文件体系完整说明

本文系统讲解 VSCode 中 C++ 项目常用的配置文件,包括:

  • CMakePresets.json
  • tasks.json
  • launch.json
  • settings.json
  • .vscode/extensions.json
  • CMakeLists.txt

并给出完整案例,适用于:

  • Windows
  • VSCode
  • CMake + Ninja
  • MSVC(Visual Studio 2019 工具链)
  • Debug / Release 分离构建

1. 各配置文件的作用(总览)

文件 作用 使用者
CMakePresets.json 定义 CMake 的配置方式、构建方式、构建目录 CMake / CMake Tools
tasks.json VSCode 的构建任务(调用 CMake 构建) VSCode
launch.json VSCode 调试配置(调试器、程序路径、参数) VSCode 调试器
settings.json VSCode 项目级设置(如 CMake generator) VSCode
extensions.json 推荐安装的扩展 VSCode
CMakeLists.txt CMake 项目描述文件 CMake

它们之间的关系如下:

复制代码
CMakePresets.json → 决定如何配置/构建项目
tasks.json        → VSCode 如何调用 CMake 构建
launch.json       → VSCode 如何调试 CMake 生成的程序
settings.json     → VSCode 的 CMake Tools 行为

2. 文件之间的关系(核心理解)

2.1 CMakePresets.json 是整个体系的"源头"

它定义:

  • 使用的编译器(MSVC、Clang、MinGW)
  • 使用的构建系统(Ninja、VS2019)
  • Debug / Release 配置
  • 构建目录(如 build/debug、build/release)

VSCode 的 CMake Tools 会自动读取它。


2.2 tasks.json 调用 CMakePresets.json 进行构建

示例:

json 复制代码
{
    "label": "build",
    "command": "cmake",
    "args": [
        "--build",
        "--preset",
        "windows-debug"
    ]
}

2.3 launch.json 调试 CMake 构建出的程序

关键字段:

复制代码
"program": "${command:cmake.launchTargetPath}"

VSCode 会自动找到当前 CMake target 的可执行文件。


2.4 settings.json 控制 VSCode 的 CMake 行为

示例:

json 复制代码
{
    "cmake.generator": "Ninja",
    "cmake.buildDirectory": "${workspaceFolder}/build"
}

3. 完整案例(Windows + VSCode + CMake + Ninja + MSVC)

以下是推荐的项目结构:

复制代码
MyProject/
 ├─ CMakeLists.txt
 ├─ src/
 │   └─ main.cpp
 ├─ CMakePresets.json
 └─ .vscode/
     ├─ launch.json
     ├─ tasks.json
     └─ settings.json

4. CMakePresets.json(核心配置)

适用于 Ninja + MSVC + Debug/Release 分离:

json 复制代码
{
    "version": 3,
    "configurePresets": [
        {
            "name": "debug",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build/debug",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "CMAKE_C_COMPILER": "cl.exe",
                "CMAKE_CXX_COMPILER": "cl.exe"
            }
        },
        {
            "name": "release",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build/release",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release",
                "CMAKE_C_COMPILER": "cl.exe",
                "CMAKE_CXX_COMPILER": "cl.exe"
            }
        }
    ],

    "buildPresets": [
        {
            "name": "debug",
            "configurePreset": "debug"
        },
        {
            "name": "release",
            "configurePreset": "release"
        }
    ]
}

5. tasks.json(构建任务)

VSCode 调用 CMakePresets:

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build-debug",
            "type": "shell",
            "command": "cmake",
            "args": [
                "--build",
                "--preset",
                "debug"
            ],
            "group": "build"
        },
        {
            "label": "build-release",
            "type": "shell",
            "command": "cmake",
            "args": [
                "--build",
                "--preset",
                "release"
            ],
            "group": "build"
        }
    ]
}

6. launch.json(调试 MSVC → cppvsdbg)

自动找到 CMake target 的可执行文件:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug (MSVC + Ninja)",
            "type": "cppvsdbg",
            "request": "launch",

            "program": "${command:cmake.launchTargetPath}",
            "args": [],

            "cwd": "${workspaceFolder}",
            "console": "externalTerminal",

            "preLaunchTask": "build-debug"
        }
    ]
}

调试 Release 时只需改:

复制代码
"preLaunchTask": "build-release"

7. settings.json(VSCode 项目设置)

json 复制代码
{
    "cmake.useCMakePresets": true,
    "cmake.configureOnOpen": true
}

8. 文件关系图(最终总结)

复制代码
CMakePresets.json  ←---------  定义如何配置/构建(Ninja + Debug/Release)
        ↓
tasks.json ------→ VSCode 调用 CMakePresets 构建
        ↓
launch.json ------→ 调试 CMake 构建出的 exe
        ↓
settings.json ------→ 控制 VSCode 的 CMake 行为

相关推荐
闻缺陷则喜何志丹3 小时前
【C++动态规划】B3734 [信息与未来 2017] 加强版密码锁|普及+
c++·算法·动态规划·洛谷
nebula-AI3 小时前
VSCode SFTP 同步流程指南
ide·vscode·云计算·编辑器·ssh
承渊政道3 小时前
【贪心算法】(经典实战应用解析(三):K次取反后最⼤化的数组和、按⾝⾼排序、优势洗牌、最⻓回⽂串、增减字符串匹配)
数据结构·c++·学习·算法·贪心算法·线性回归·哈希算法
alexwang2113 小时前
P16473 [GKS 2013 #B] Sudoku Checker题解
c++·算法·题解·洛谷
一条鱼头3 小时前
c++11语法点
开发语言·c++
Peter·Pan爱编程3 小时前
C++中的 const 与 volatile:比C强大十倍
c++·const·volatile·c++基础
lihao lihao3 小时前
MFC知识点
c++·mfc
Shadow(⊙o⊙)3 小时前
进程分析2.0——进程退出、进程等待-Linux重要经典模块
linux·运维·服务器·开发语言·c++·学习
ejinxian3 小时前
JetBrains 宣布免费CLion 和同类 IDE 的对比
ide·clion