Windows下VSCode配置C++环境
介绍
本文介绍了如何在 Windows 10 下使用 VSCode 配置 C/C++ 环境,编译器采用 MinGW-w64(GCC 在 Windows 下的支持)
主要参考了微软 VSCode 官方文档配置 Mingw-w64文档: Mingw-w64 on Windows ,含有大量的翻译内容
配置编译器
MinGW-w64
Mingw-w64 是原始 http:// mingw.org 项目的改进,旨在支持 Windows 系统上的 GCC 编译器。它在 2007 年进行了分叉,以提供对 64 位和新 API 的支持。从那以后,它得到了广泛的使用和分配。
注意 MinGW-w64 与 MinGW 是有区别的,不要选错
一、下载
托管在此网站: https:// sourceforge.net/project s/mingw-w64/files/
可以直接选择在线安装器:MinGW-W64 Online Installer
也可以选择相应版本安装,这里我选择的是
二、安装
方法1. 使用安装包
选项说明:
参考: https:// wiki.qt.io/MinGW-64-bit
方法2. 压缩包(推荐)
下载相应的安装包,具体版本选择参考上表,选择合适位置解压至
路径中没有空格的文件夹
(换句话说,不能是
C:/Program Files/
下的默认位置,可以是
C:\mingw-w64
)
- 添加环境变量
将 mingw64 下的 bin 文件夹添加至 path
2. 检查
执行命令
g++ --version
gdb --version
配置 IDE
VSCode
step 1: 安装 MinGW-w64
step 2: 安装 C/C++ 插件
step 3: 配置
前2步大家都不会有问题,这里我们重点来讲第三步——配置
我们总共需要在
.vscode
文件夹下创建如下3个文件:
-
tasks.json
(生成任务。告诉 VSCode 如何生成(编译)程序,该任务将调用 g++ 编译器以基于源代码创建可执行文件) -
launch.json
(调试器设置) -
c_cpp_properties.json
(编译器路径和 IntelliSense 设置)
具体操作说明:
1. 创建 C++ 示例代码文件 Hello World,并保存,确保存在于文件夹中,而非临时文件
示例代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
cout << word << " ";
cout << endl;
2. 配置
tasks.json
,用于编译
a. 配置
tasks.json
菜单 > 终端 > 配置默认生成任务
下拉列表中,列出了 C++ 编译器的各种预定义构建任务。选择
C/C++: g++.exe build active file
。若是 C,请选择
C/C++: gcc.exe build active file
,C 无法使用 g++.exe
Note : 是 C 还是 C++ 是根据文件后缀名来判断的,而非根据右下角选择的语言
完成后会在
.vscode
文件夹下创建
task.json
文件并打开
部分变量说明:
- command 设置指定要运行的程序;在这种情况下是 g++
- args 数组指定将传递给 g++ 的命令行参数。必须按照编译器期望的顺序指定这些参数。此任务告诉 g++ 获取活动文件(${file}),对其进行编译,并在当前目录(${fileDirname})中创建一个与活动文件同名但以 .exe 为扩展名(${fileBasenameNoExtension}.exe)的可执行文件,如 helloworld.exe 。可使用"${workspaceFolder}\\*.cpp"来替换 ${file},这将生成当前文件夹中的所有 .cpp 文件
-
label
是在任务列表中显示的值,可以随意命名 -
group
中"isDefault": true
指定当按 Ctrl + Shift + B 时将运行此任务。此属性仅出于方便起见;如果设置为 false,仍然可以使用“ 任务:运行构建任务” 从“终端”菜单中运行 -
gourp
中的"isDefault": true
,指定当按下 Ctrl + Shift + B 时将运行此任务。此属性仅出于方便起见;如果将其设置为 false,仍可以使用“ 运行生成任务” 从“终端”菜单中运行
b. 运行生成任务,编译
回到
helloworld.cpp
,按 Ctrl + Shift + B 或从“
终端”
菜单中选择“
运行生成任务”
成功如图所示
且当前文件夹下会多出一个
helloworld.exe
文件,可以使用”+“按钮新建一个终端,用来执行它,输入
.\helloworld.exe
3. 配置
launch.json
,用于调试
a. 配置
launch.json
按
F5
或 菜单 > 调试 > 添加配置 > 选择“ C ++(GDB / LLDB)”
将看到各种预定义调试配置的下拉列表,选择 g++.exe build and debug active file
VSCode 将会创建
launch.json
文件并打开
部分变量说明:
-
program
设置指定要调试的程序 -
默认情况下,C++ 扩展不会在您的源代码中添加任何断点,并且
stopAtEntry
值设置为false
。将stopAtEntry
值更改为true
会导致调试器开始调试时在main
方法上停止
记得保存修改
b. 调试
回到
helloworld.cpp
,按 F5 或从主菜单中选择“
调试”>“开始调试”
- Step over (单步跳过):前进到该程序中的下一条语句(跳过为初始化循环而执行的所有内部代码)
- Step Into (单步调试):逐步浏览 C++ 标准库中的源代码,若要返回自己的代码,可以按 Step over (单步跳过)或者直接切换选项卡
具体调试过程省略,有兴趣的朋友可以在底部的参考链接参考官方文档中的调试
设置 WATCH :
可以用来跟踪变量的值
将断点设置为如图所示位置,并在
WATCH
窗口中点击“+”,在文本框中输入“word”,这是循环中的变量名,当逐步执行循环时,可发现
WATCH
窗口中的“word”的值在变化
可在调试时,将鼠标悬浮于变量中,快速查看任何变量的值
4. 配置
c_cpp_properties.json
,进一步配置 C/C++ 扩展。
非必要步骤
a. 进入 C/C++ 插件配置界面
按快捷键 Ctrl+Shift+P 打开命令面板,输入 C/C++,选择“Edit Configurations(UI)”
将生成配置文件
c_cpp_properties.json
并打开
b. 配置以下两个选项
第一项:编译器路径
compilerPath
应该会自动填充,我这里是
D:\\Develop\\compilers\\mingw64\\bin\\gcc.exe
compilerPath
搜索顺序是:
- 首先检查 Microsoft Visual C ++ 编译器
- 然后在 Windows Subsystem for Linux(WSL)上寻找 g++
- 然后是用于 Mingw-w64 的 g++
如果安装了 Visual Studio 或 WSL,则可能需要更改
compilerPath
第二项:IntelliSense 模式,选择 gcc-x64
配置文件参考
task.json
{
"version": "2.0.0",
"tasks": [
"type": "shell",
"label": "g++.exe build active file",
"command": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\g++.exe",
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
"options": {
"cwd": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin"
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
launch.json
{
"version": "0.2.0",
"configurations": [
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",
"setupCommands": [
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
"preLaunchTask": "g++.exe build active file"
}
c_cpp_properties.json
{
"configurations": [
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gcc.exe",
"cStandard": "c11",