VS Code中C++编译和调试环境配置(Win10)
准备工作
VS Code的安装
在VS Code安装包下载页面选择相应的版本进行下载:
C++和简体中文扩展插件安装
简体中文插件
首先在扩展应用商店中搜索chinese
,并选择第一个扩展进行安装,点击Install
之后重启vscode即可:
C++插件
在左侧应用商店中搜索C++
,并选择第一个扩展插件进行安装,点击Install
即可:
安装和配置MinGW
MinGW的安装这里建议使用离线包的安装,因为使用方便,直接解压即可。
一、下载离线包
准备中给出的离线包连接中选择任意一个版本的x86_64-posix-seh
下载即可。
二、解压并存放
使用7z或其他解压工具进行解压,并将其中的mingw整个文件夹复制到自己想要存放的位置,路径中不要有中文,而且建议路径不要太长,省的寻找的时候麻烦。比如我将mingw存放在路经C:\myprogram
之下。
三、添加至环境变量中
将mingw中的bin目录添加到系统的环境变量中,方法如下:
1. 找到“系统环境变量”的设置位置,在开始菜单的搜索栏搜索环境变量
2. 添加系统环境变量,依此:点击环境变量,找到系统变量中的path,点击编辑,然后点击新建,在使用浏览按钮选中到mingw下的bin文件夹即可。
效果如下图所示:
四、验证是否配置成功
在cmd命令行窗口中输出:gcc -v
,如果成功则显示如下信息gcc version 8.1.0
:
创建配置文件
根据官方的文档,需要创建以下三个配置文件,以用于编译和运行cpp文件,这里需要先创建一个工作区文件夹,用来保存相关配置文件和将来创建的源代码文件,这里我自己创建了一个命名为vscpp
的文件夹(以下均称该文件夹为工作区),如下图所示:
以下文件夹和文件可以手动创建,也可以随便打开一个工作空间中的cpp文件然后使用F5
自动根据模板创建launch.json
和tasks.json
,其中c_cpp_properties.json
文件可以通过VS Code的命令面板中的C/C++:Edit Configurations
命令创建。
工作空间中的配置文件都存放在名为.vscode
的文件夹中:
接下来分别是三个配置文件的内容:
1.首先是c_cpp_properties.json
//由于该文件不允许注释,因此这里单独列出,如需复制请使用下面没有注释的文件
//该配置文件请以命令自动创建的模板为准
//这里只告知相关参数的含义
{
"configurations": [
{
"name": "Win32",
"includePath": [ //include头文件的路径,一般现在系统路径下找,然后才是这个配置项中的目录
"${workspaceFolder}/**" //这里表示工作空间路径,**表示递归查询目录下的所有头文件
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:\\myprogram\\mingw64\\bin\\g++.exe", //编译器的路径,使用自己的编译器路径,主要用于智能提示时查找系统路径下的头文件,不如mingw64中的include文件夹
"cStandard": "c17", //使用的C和C++标准
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64" //智能提示的规则,命令行创建该文件时会检测你电脑上现有的智能提示模式,如果安装过vs2010之类的,可能就是msvc之类的,如果使用了mingw64,建议改为gcc-x64
}
],
"version": 4
}
无注释的文件内容为:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:\\myprogram\\mingw64\\bin\\g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
2.其次是launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //调试的可执行文件的路径,这里直接引用了当前打开的活动窗口中的文件路径中同名的.exe文件
"args": [], //可执行文件的参数
"stopAtEntry": false, //是否再可执行文件入口处停止
"cwd": "${fileDirname}", //调试命令启动时的路径,建议使用文件所在路径,方便再同文件夹下搜索依赖的头文件或者输入输出文件
"environment": [],
"externalConsole": true, //若参数为true,输出结果就会在cmd窗口中显示,若为false,输入输出则显示在VS Code内置的终端中
"MIMode": "gdb",
"miDebuggerPath": "C:\\myprogram\\mingw64\\bin\\gdb.exe", //debug调试器的路径,只需将本行的路经改为自己的gdb.exe路径即可,以我的为例,注意需要将斜线改为双斜线(由于文件路径的斜杠表示方法不同,所以需要转义)
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file" //前置任务名称,即tasks中的任务label名称(要保持一致),即先通过tasks进行编译再启动调试
}
]
}
3.最后是tasks.json
{
"version": "2.0.0",
"tasks": [ //定义编译任务
{
"type": "shell", //命令类型
"label": "g++.exe build active file", //tasks的任务名称
"command": "C:\\myprogram\\mingw64\\bin\\g++.exe", //将本行的路经改为g++.exe所在的路经,以我的为例,将斜线改为双斜线
"args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"], //g++命令的编译参数,-g表示带调试信息,file表示引用当前打开的文件,-o表示指定输出文件名,指定为同文件路径下同名的.exe后缀的可执行文件
"options": {
"cwd": "${workspaceFolder}" //编译命令的执行时的路径,建议在工作空间内
},
"problemMatcher": ["$gcc"], //用于检测编译是否完成,如果匹配到相应的输入信息,则判断当前任务已经完成,可以不同改动
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
创建cpp文件进行测试
[buy]
- 在工作区中创建的所有cpp文件,或者文件夹中的子文件都可以使用到以上的配置
- 因此可以根据自己的需求创建不同的文档管理源代码
[/buy]
此处,我创建了learnC++文件夹,用于存放学习C++时候编写的源代码文件,以便于和其他做以区分。
首先在learnC++文件夹中创建一个cpp文件,比方说创建一个main.cpp
用于打印输出Hello World!
:
#include<iostream>
using namespace std;
int main(void){
cout<<"Hello World!"<<endl; //输出Hello World!
system("pause"); //如果使用外部终端,则需要加上这句防止cmd窗口运行结束后直接退出
return 0;
}
使用F5
编译运行并调试,效果如下所示(可在代码左侧打上断点):