1. MinGW下载安装
首先需要说明的是VS Code是一个编辑器 ,而不是编译器**。** 编辑器和编译器是有很明显的区别
1.1 编辑器和编译器区别
编辑器是一种用于编写和编辑文本的应用软件,主要用于编写程序的源代码。编辑器提供基本的文本编辑功能,如增删改查、使用各种命令和快捷键等。你用记事本编写源程序也行,用Notepad++编辑源代码也行,用SourceInsight编辑也行,但你编完了没啥用,因为编译工具链生成不了可执行的文件。
编译器是一种将高级编程语言翻译成机器语言或目标代码的程序。编译器的核心功能是将源代码转换为机器能理解的指令,通常包括预处理、编译、链接等步骤。比如开发STM32单片机程序用Keil MDK,在Keil上编完可以执行编译链接下载将程序烧录到单片机上;开发Arduino代码用Arduino IDE也可以将编好的Arduino代码烧录到Arduino UNO开发板上,再比如开发TI芯片的CC25XX系列单片机,需要用IAR编译平台。
1.2 为啥需要安装MinGW
VS Code只是一个编辑器和扩展支持集成开发环境(IDE),但它本身并不包含编译器。所以想用VS Code编译C或者C++的程序需要自己手动配置编译环境, MinGW是GCC的windows版本,能够使用GCC的命令在windows环境下编译C/C++代码,如果你接触过Linux的驱动和应用,肯定对GCC编译链不陌生。
GCC(GNU Compiler Collection,GNU编译器套件)是一个开源的、跨平台的编译器套件,支持多种编程语言和目标架构,包括C、C++、Objective-C、Fortran、Ada、Go等多种语言。GCC的主要功能是将源代码编译成机器代码,通常生成可执行文件或库文件。
1.3 安装MinGW
接下来按步骤的展示如何下载和安装MinGW,首先打开其官网链接:
然后点左侧的Dowloads
然后看右侧的MinGW-W64-builds,然后看有个github链接,很多教程上并没有这样写,因为MinGW已经把安装包放到Github上了,他们写的还是以前的查找安装包的方式。
打开后可以看到当前的最新版本是14.2.0,然后我的电脑是windows10 64位的操作系统,就选X86_64的就行(现在好像很少见32位的操作系统了吧)。然后点击一下就会自动下载,受限于github的网络,如果没有VPN加速会下载的很慢,所以我把这个版本的安装包链接放在下面,有需要的可以自行下载:
当然你也可以点击Tags切换版本,可以查看和下载历史版本
下载好MinGW安装包后是个压缩包,解压缩就可以了,解压缩后的内容如下,重点关注bin文件夹就行。
然后需要配置你自己电脑的环境变量,依次点击鼠标右键此电脑-->属性-->在查找设置中输入:高级环境设置,然后打开如下图所示,查看高级,然后点击环境变量
系统变量中找到Path变量,然后按下图操作
然后把刚刚下载的MinGW安装包的bin文件夹的路径复制进去,然后点确定,一定要是bin文件夹那一级,比如我的是:H:\minGW\x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0\mingw64\bin。如下图所示
1.4 验证安装是否成功
电脑键盘按下win图标按键+R,会弹出来搜索框,输入:cmd
然后输入gcc -v,,如果出现了gcc version 14.2.0就说明MinGW安装成功了。
2. VS Code环境配置
2.1 安装C/C++依赖
VS Code安装很简单,参考其他教程即可,安装好VS Code后打开,按下图的四个步骤操作,分别安装C/C++扩展包和C/C++运行包。安装成功后一定要重启VS Code !!!
2.2 配置C/C++的编译环境
首先在除了C盘外的任何一个盘里创建一文件夹,以后写的C/C++代码就放在这里。比如我的如下图:
然后打开VS Code,选择打开文件夹(Open Folder),打开之后选择刚刚新建的Ctest文件夹,出现如下界面
然后在VSCODE_202410(你自己起啥名随便)这个名字后面点一个图标新建一个文件夹,起名为 .vscode 注意:前面的点也要打进去!!!
然后在这个新建的.vscode文件夹中新建分别四个文件,这个时候就要鼠标右键点到.vscode上,会出现一个下拉框,点新建文件。而不是在VSCODE_202410后面点新建文件!!!
第一个文件名称为:c_cpp_properties.json 如下所示,"H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",这一句替换成你自己的安装目录然后加上g++.exe,我的是H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin,
注意:从你的MinGW中的bin文件夹路径复制下来后,所有都是反斜杠,一定要把它改成斜杠!!!
因为放在双引号里,以反斜杠开头系统会认为是转义字符,而不是一个路径。
cpp
{
"configurations": [
{
"name": "Win64",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
第二个文件名称为:launch.json
同样也要记得替换路径!!!
java
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "H:/minGW/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0/mingw64/bin/g++.exe",
"preLaunchTask": "g++",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
第三个文件名称为:settings.json
这个文件内容没有需要替换的
cpp
{
"files.associations": {
"*.py": "python",
"iostream": "cpp",
"*.tcc": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"ostream": "cpp",
"new": "cpp",
"typeinfo": "cpp",
"deque": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"fstream": "cpp",
"sstream": "cpp",
"map": "c",
"stdio.h": "c",
"algorithm": "cpp",
"atomic": "cpp",
"bit": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"compare": "cpp",
"concepts": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"exception": "cpp",
"ios": "cpp",
"istream": "cpp",
"iterator": "cpp",
"limits": "cpp",
"memory": "cpp",
"random": "cpp",
"set": "cpp",
"stack": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"xfacet": "cpp",
"xiosbase": "cpp",
"xlocale": "cpp",
"xlocinfo": "cpp",
"xlocnum": "cpp",
"xmemory": "cpp",
"xstddef": "cpp",
"xstring": "cpp",
"xtr1common": "cpp",
"xtree": "cpp",
"xutility": "cpp",
"stdlib.h": "c",
"string.h": "c"
},
"editor.suggest.snippetsPreventQuickSuggestions": false,
"aiXcoder.showTrayIcon": true
}
第四个文件名称为:tasks.json
这个文件内容也没有需要替换的
cpp
{
"version": "2.0.0",
"tasks": [
{
"label": "g++",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
2.3 测试能否成功编译C/C++代码
接下来在VSCODE_202410新建一个文件夹,名字随便起,我的就叫Ctest,保持和.vscode同级,以后的C/C++代码就都放在这里编写和编译。
新建完成Ctest文件夹后,就可以在该文件夹中新建C/C++源代码文件了,点击Ctest右键,新建文件test.cpp。注意C文件的源文件是.c,C++文件的源文件是.cpp。
cpp
#include <iostream>
using namespace std;
int main( )
{
cout << "晚上好 胖虎" << endl;
cout << "今天是2024年10月9日" << endl;
cout << "现在已经晚上十一点多了,该睡觉了!" << endl;
return 0;
}
代码运行结果如下,此时说明可以完美运行C++程序,编译环境配置完成。
2.4 多个C文件同时编译的配置问题
可以参考这篇博客,我懒得写了