# windows 基于vscode的C++ cmake环境搭建 **Repository Path**: kid-kid/vscode-cpp-env ## Basic Information - **Project Name**: windows 基于vscode的C++ cmake环境搭建 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-27 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 最新:Windows 系统 VsCode & C++(CMake)环境搭建指南 --- 在 Windows 上使用 **VS Code & C++& CMake** 是一种轻量、灵活且跨平台的开发方式。虽然初期需要配置,但一旦搭建好,体验非常流畅。下面是一份 **详细、可靠、最新的搭建指南** ,适合新手和进阶用户。 --- ## ✅ 一、安装必要软件 ### 1.安装 VS Code * 官网:[https://code.visualstudio.com/](https://code.visualstudio.com/) * 安装时勾选 **“Add to PATH”** (方便命令行启动) ### 2.安装编译器 MinGW * 如果是安装了 Qt 的 Mingw 编译器那么不需要下载 MinGW 安装了,直接用 Qt 的即可 * 下载地址(推荐):[https://www.mingw-w64.org/downloads/](https://www.mingw-w64.org/downloads/) 进入下载地址后选择[ MinGW-W64-builds](https://www.mingw-w64.org/downloads/?spm=5176.28103460.0.0.4f116308mls5CG#mingw-w64-builds) ![1772247564187](image/README/1772247564187.png) 之后下拉找到[ GitHub ](https://github.com/niXman/mingw-builds-binaries/releases)下载地址: ![1772247681029](image/README/1772247681029.png) 选中[ x86_64-15.2.0-release-posix-seh-ucrt-rt_v13-rev1.7z ](https://github.com/niXman/mingw-builds-binaries/releases/download/15.2.0-rt_v13-rev1/x86_64-15.2.0-release-posix-seh-ucrt-rt_v13-rev1.7z)这个版本: ![1772247687069](image/README/1772247687069.png) 各个字段的说明如下: | 部分 | 含义 | | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | x86_64 | 目标架构:生成 64 位(x64)程序``(对应 32 位是 i686) | | 15.2.0 | GCC 编译器版本号``GCC 15.2.0(截至 2025 年,这是较新的开发版或预发布版;稳定版通常为 GCC 13/14) | | release | 构建类型:正式发布版(非 debug 版) | | posix | 线程模型:使用 POSIX 线程(pthreads)``✅ 支持 std::thread、std::mutex 等 C++11 多线程特性``(另一个选项是 win32,不支持标准 C++ 线程) | | seh | 异常处理模型:Structured Exception Handling (SEH)``✅ 64 位 Windows 推荐使用 SEH(性能好、兼容性佳)``(32 位常用 sjlj,但 64 位不支持 sjlj) | | ucrt | C 运行时库:使用 Universal C Runtime (UCRT)``✅ Windows 10+ 的标准 CRT,由系统提供(ucrtbase.dll)``(旧版用 msvcrt,已过时) | | rt_v13 | 可能指 运行时库版本 或 构建脚本版本(非官方标准命名,可能是打包者自定义) | | rev1 | 修订版本:第 1 次修订(可能修复了打包问题) | | .7z | 压缩格式:7-Zip(高压缩率) | ### 3.安装 CMake 打开 CMake 官方下载页: 👉 [https://cmake.org/download/](https://cmake.org/download/?spm=5176.28103460.0.0.4f116308mls5CG) 选择免安装版或者上面。msi 的安装文件都行 ![1772247703996](image/README/1772247703996.png) ### 4.将 MingW 和 CMake 路径添加到系统环境变量中 ![1772247760313](image/README/1772247760313.png) > 💡 验证安装:打开 CMD,输入 `g++ --version` 、 `gcc --version` 、 `cmake -version` 、 `make -version` 、 `gdb -version`,应有输出,如下图: ![1772247730411](image/README/1772247730411.png) 另外可以通过一下命令查找工具安装在哪个位置: ```C++ where gcc where g++ where gdb where cmake where make ``` --- ## 💪 二、安装 VS Code 插件 **在 VS Code 中安装以下插件:** **1.C/C++ Extension Pack:必须,推荐开发方式,这一个插件就包括了下面四个插件** * [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)**(必须)** * [C/C++ Themes](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-themes) * [C/C++ DevTools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpp-devtools) * [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools)**(必须)** **2.CMake:安装,提供语法高亮等** **3.Chinese (Simplified) (简体中文):界面汉化用可选,安装** ![1772247770728](image/README/1772247770728.png) --- ## 😊 三、创建一个多文件 CMake 项目(示例) 可以下载源码直接演示: 项目文件目录如下: ![1772247777831](image/README/1772247777831.png) --- ## 👻四、调试运行 ### 方法 1:使用 CMake Tools(推荐,图形化,非常简单快捷) #### **1.在为项目设置工具包(如果找不到可以先点一下【扫描工具包】试一下)** ![1772247799510](image/README/1772247799510.png) 设置完成后会自动生成 build 目录以及下面的 Makefile 等文件 ![1772247805926](image/README/1772247805926.png) #### **2.点击生成,生成。exe 可执行文件(如果需要 debug 直接看第 3 步,会自动生成 exe 不需要单独执行这步)** ![1772247811309](image/README/1772247811309.png) 在 build 目录下会生成一个可执行文件 ![1772247817445](image/README/1772247817445.png) **直接运行可以看到运行结果正确:** ![1772247822950](image/README/1772247822950.png) #### **3.在线调试 Debug** 直接点击 Debug 调试按钮,可以看到会重新链接生成可执行文件,所以代码改动了保存后可以直接 debug,这样就不需要每次进行生成操作,可以看出非常的简单方便。 ![1772247827621](image/README/1772247827621.png) --- #### **4.设置默认预设文件(可选,个人项目可以不设置,跨平台或复杂依赖项目才推荐用)** CMake 3.19+ 引入的官方标准功能,用于标准化和共享 CMake 配置。VS Code 的 CMake Tools 插件从 v1.10+ 开始支持它。 | 场景 | 建议使用预设 | | ------------------------------------------ | -------------------------- | | ✅ 团队协作(多人开发) | 避免“在我机器上能跑”问题 | | ✅ 多平台构建(Win/Linux/macOS) | 统一各平台参数 | | ✅ 复杂项目(带 CUDA/OpenMP/自定义工具链) | 避免手输 -DXXX=YYY | | ✅ 需要固定构建目录结构 | 如 out/build/debug-x64 | | ✅ 与 CI 流水线保持一致 | 保证本地和 CI 行为相同 | 1. 按 `Ctrl+Shift+P` → 输入 “CMake Quick Start” ![1772247834062](image/README/1772247834062.png) 2. 选择添加新预设 ![1772247838468](image/README/1772247838468.png) 3. 选择从编译器创建 ![1772247842413](image/README/1772247842413.png) 4. 选择你的编译器 ![1772247846747](image/README/1772247846747.png) 5. 设置名称 ![1772247850811](image/README/1772247850811.png) 默认生成的配置如下(每个人路径不同配置不同): ![1772247858313](image/README/1772247858313.png) 可以修改相关参数 ![1772247864007](image/README/1772247864007.png) 如果是新拿到的项目可以直接通过这个预设进行编译调试 ![1772247868968](image/README/1772247868968.png) --- ### 方法 2:手动编译调试配置(不推荐,通过这个方式了解原理) #### 1.手动生成 Makefile 文件 这里注意一点因为我们用的是 Mingw 必须用 `cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ..` 如果用 `cmake .. ` 生成的文件是基于 MSVC 的。 *注意:如果不指定-DCMAKE_BUILD_TYPE=Debug 在 CMakeCache.txt 里就是空,导致调试的时候没办法断点停止* 具体命令如下: ```Bash mkdir build #创建目录 cd build #进入到build目录 # 正确的配置方式 cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .. # 我们用这个命令,因为是用的MinGW # 如果不指定,CMAKE_BUILD_TYPE 在CMakeCache.txt就是空,导致调试的时候没办法断点停止 cmake -G "MinGW Makefiles" .. # 或 cmake .. # 如果用 MSVC(默认生成 Visual Studio 工程) ``` #### 2.编译 ```Bash # MinGW mingw32-make #之前我们复制了一个mingw32-make.exe重命名成make.exe 这里我们可以用make # MSVC(需在 Developer Command Prompt 中) cmake --build . ``` ![1772247879946](image/README/1772247879946.png) #### 3.运行 ```Bash ./main.exe ``` ![1772247885538](image/README/1772247885538.png) #### 4.一键调试运行 点击运行调试(或者直接点击创建 launch.json 文件,不推荐), ![1772247889923](image/README/1772247889923.png) ![1772247896012](image/README/1772247896012.png) 选择编译器 ![1772247901312](image/README/1772247901312.png) 点击打开 launch.json ![1772247905266](image/README/1772247905266.png) 默认的 launch.json 是内容不全,选择右下角添加配置,选择 gdb 启动 ![1772247911879](image/README/1772247911879.png) 默认会生成这两个文件: ![1772247916714](image/README/1772247916714.png) 如果没有生成 task.json 也可以手动创建,通过 Ctrl+Shift+P 输入 task 调用命令生成,或者手动创建文件。 ![1772247922236](image/README/1772247922236.png) launch.json 和 task.json 修改如下图所示: ![1772247927303](image/README/1772247927303.png) launch.json 保存后会在左上角显示配置,名称为 launch.json 中 namez 字段,可以随意起名。直接点击左上角调试按钮或者按住 F5 即可开始调试,断点也能正确停止。 ![1772247933060](image/README/1772247933060.png) **总结:手动方式相对来说很繁琐,不如方法一直接使用 CMakeTools 工具直接给配置好,但是对于熟悉工作原理还是很有帮助的。** --- ## 🧠五、关于 launch.json 和 task.json 关系 **`tasks.json`** *负责编译,`launch.json`*负责调试,通过 ****`preLaunchTask`**** 串联起来实现"一键调试"。** 如果不添加 task.json 的话每次必须手动编译生成新的 exe 再执行 launch.json 启动调试才可以,否则的话每次调试的都是之前的 exe,运行结果不是正确的。如下图所示: ![1772247939654](image/README/1772247939654.png) 所以每次需要先通过 launch.json 中 preLaunchTask 调用 tasks.json 任务进行编译然后再启动 GDB 调试: ```Plain ┌─────────────────────────────────────────────────────────────┐ │ VSCode 调试流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 按 F5 调试 │ │ │ | │ ▼ | │ ┌─────────────┐ preLaunchTask ┌─────────────┐ │ │ │ launch.json │ ──────────────────► │ tasks.json │ │ │ │ (调试配置) │ | (任务配置) | │ │ └─────────────┘ └─────────────┘ │ │ │ │ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ 启动 GDB │ | 编译项目 │ │ │ │ 加载 exe │◄─────────────────────│ cmake + make│ │ │ │ 连接断点 │ exe 文件准备就绪 └─────────────┘ │ │ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘ ``` --- ### tasks.json - 任务配置(构建/编译) **作用:** 定义自动化任务,比如编译、清理、测试 ```JSON { "tasks": [ { "type": "shell", "label": "C/C++: g++.exe 生成活动文件", "command": "mingw32-make", "options": { "cwd": "${workspaceFolder}/build" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" } ], "version": "2.0.0" } ``` | 字段 | 说明 | | :---------: | ----------------------------------------------- | | `label` | **任务名称,供 launch.json 引用** | | `command` | **要执行的命令** | | `cwd` | **命令执行目录** | | `group` | **设为默认构建任务(Ctrl+Shift+B 触发)** | --- ### launch.json - 调试配置 **作用:** 定义如何启动和调试程序 ```JSON { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/main.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe 生成活动文件" } ] } ``` | 字段 | 说明 | | :----------------: | ------------------------------------- | | `program` | **要调试的 exe 文件路径** | | `miDebuggerPath` | **GDB 调试器路径** | | `preLaunchTask` | **关键! 调试前自动运行的任务** | | `stopAtEntry` | **是否在 main() 入口暂停** | --- **工作流程:** ```Plain 按 F5 → 检查 preLaunchTask → 执行 tasks.json 中的 build 任务 ↓ cmake + make 编译 ↓ 生成新的 main.exe ↓ launch.json 启动 GDB ↓ 加载 main.exe,断点生效 ``` --- ## ✅ 六、常见问题解决 ### ❓ Q1: **断点不生效,点击运行调试,直接运行了整个程序** * 原因:**编译时没有指定类型导致 CMAKE_BUILD_TYPE 为空** ![Alt text](image.png) * 解决: * **方法一(推荐)、cmake 时就指定编译类型,运行下面这个命令**: `cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug ..` * **方法二、CMakeLists.txt 中指定 BUILD_TYPE**: ```CMake #添加这一行:如果没有指定 BUILD_TYPE,默认使用 Debug if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type" FORCE) endif() ``` ![1772247949729](image/README/1772247949729.png) * **方法三、手动完善 `CMakeCache.txt`,补上 Debug 属性**: ![1772247982485](image/README/1772247982485.png) ### ❓ Q2: **调试时运行旧 exe** * 原因:没有 **`preLaunchTask`** * 解决:在 launch.json 中添加 `preLaunchTask`预编译任务,在 task.json 添加预构建任务,参考 **[四-4.一键调试运行](章节)** --- ## 🤖 Tips:小技巧 **1.可以选择关闭自动生成选项** ![1772247990781](image/README/1772247990781.png) **2.手动配置的情况下生成文件修改命令为 make** ![1772247997637](image/README/1772247997637.png) --- ## 🎁 附:一键脚本(MinGW 用户) 在项目根目录创建 `build.bat`: ```bash @echo off if not exist build mkdir build cd build cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .. mingw32-make cd .. ``` 双击或者直接在终端中运行即可编译生成文件! ![1772248003890](image/README/1772248003890.png)