Part.I 预备知识
MinGW
提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU (http://www.gnu.org/)的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。- 安装
MinGW
需要注意的几点:① 建议选择Current版本,Previous表示以前的版本;Candidate表示当前正在开发的版本,可能正在测试中,还不是非常稳定。② 安装路径请选择一个容易找到的地方,默认的C:/Enviroments/MinGW
是不错的选择(ps: 默认是C:/MinGW
,但是有当需要好多环境时不如选择前者)。 MinGW Installation Manager
中,复选框为『绿色』表示已经安装的项目,『白色』表示还未安装的项目。如果要卸载已安装的项目,右键→Mark for removal
;如果要安装未安装的项目,右键→Mark for Installation
。接着点击菜单栏Installation
→Apply Changes
即可。MSYS2
(Minimal SYStem 2) 是一个MSYS
的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从”MinGW-生成”)基础上产生的,追求更好的互操作性的 Windows 软件。 MSYS2 是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(总之就是很NB就对了)。
Part.II 搭建过程
https://blog.csdn.net/qq_40477151/article/details/103917156
详细的过程可以参看这个,下面简要记录一下整个过程。
补于 2022-12-26,用的时候发现没法看STL容器的值,有点不爽,根据前辈经验,发现是MinGW
版本太低的原因,建议下更高版本的MinGW
,下载教程如第三部分所示。
- 安装
MinGW
: https://sourceforge.net/projects/mingw/files/latest/download - 在
MinGW Installation Manager
中安装gdb, gcc, g++
- 设置环境变量:右键『我的电脑』→属性→高级系统设置→环境变量→系统变量→新建
MinGW
,并将其值赋成C:\MinGW
(你装在哪里就赋成啥) - 设置
Path
:在系统变量Path
中添加路径%MinGW%\bin
,之后点确定 - 检查是否安装好:在
powershell
中输入gcc -v
看看能否找到指令
然后下载一个c/c++
插件,在工程目录下新建含有三个名为launch.json, tasks.json, c_cpp_properties.json
文件的文件夹.vscode
。这三个文件中
launch.json
可以实现设断点调试,选择调试器与需要调试的文件进行调试。tasks.json
可以实现自动编译,这个只能执行最简单的编译指令。c_cpp_properties.json
:c
与cpp
选项。并不太需要去动它,如果出现明明在系统环境中的头文件找不到的情况,那就很可能是这里出问题了,在includePath
里加上即可。
三个文件的内容如下(可根据自己的需求更改,这是笔者的配置):
launch.json
文件内容:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
文件内容:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++", //这里注意一下,见下文
"command": "C:\\MinGW\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
//"-ggdb3", // 生成和调试有关的信息
//"-Wall", // 开启额外警告
"-static-libgcc", // 静态链接
"-std=c++17", // 使用c++17标准
"-finput-charset=UTF-8", //输入编译器文本编码 默认为UTF-8
"-fexec-charset=GB18030", //输出exe文件的编码
"-D _USE_MATH_DEFINES"
],
"options": {
"cwd": "C:\\MinGW\\bin"
},
"problemMatcher": [
"$gcc"
],
"presentation": {
"echo": true,
"reveal": "never", // 在“终端”中显示编译信息的策略,可以为always,silent,never
"focus": false,
"panel": "shared" // 不同的文件的编译信息共享一个终端面板
},
}
]
}
c_cpp_properties.json
文件内容:
{
"configurations": [
{
"name": "MinGW64",
"intelliSenseMode": "gcc-x64",
"compilerPath": "C:\\MinGW\\bin\\g++.exe",
"includePath": [
"${workspaceFolder}",
"C:\\gwork\\third-party\\Eigen" //Eigen库包含路径
],
"cppStandard": "c++17"
}
],
"version": 4
}
Part.III 安装较高版本的MinGW
官网教程:https://code.visualstudio.com/docs/cpp/config-mingw
因为调试 C++ 看不到vector的值,在网上搜了一下发现是 gdb 的版本太低(8.1以上就行,之前下的是7.6.1),所以才有了这些折腾。
步骤如下:
1、下载msys2
2、安装,将其放到一个合适的路径,比如笔者放在了A:\Programs\msys64
3、运行MSYS2
,一次输入如下指令
pacman -Syu
pacman -Su
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
前两个指令一路Y
回车,后面的一条指令会让你选要装啥,我就装了红框的两个。
4、设置环境变量:
- 右键『我的电脑』→属性→高级系统设置→环境变量→系统变量→新建
MinGW
,并将其值赋成A:\Programs\msys64\mingw64
(你装在哪里就赋成啥) - 设置
Path
:在系统变量Path
中添加路径%MinGW%\bin
,之后点确定 - 检查是否安装好:在
powershell
中输入gcc -v
看看能否找到指令
关于 VSCode 显示 Vector 的值,在launch.json
中加如下设置:
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
然后就可以看到 vector 的值了。