四、验证是否配置成功
在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文件进行测试
- 在工作区中创建的所有cpp文件,或者文件夹中的子文件都可以使用到以上的配置
- 因此可以根据自己的需求创建不同的文档管理源代码
此处,我创建了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
编译运行并调试,效果如下所示(可在代码左侧打上断点):
Comments | NOTHING