全文目录
1 概述及参考链接
本文为我收集众多教程后,缝合之后的教程,尽量保证主线明确,如有不正确之处请评论帖子,谢谢(磕头)
https://blog.csdn.net/m0_55127902/article/details/135603817
https://blog.csdn.net/Yikefore/article/details/130033638
https://blog.csdn.net/Hudiscount/article/details/120209994
2 安装 MinGW-w64 与 cmake
[!attention]
- 下载解压 MinGW-w64 与 cmake 后,将对应文件夹转移到
vscode
的文件夹之下,并且将文件夹名称分别命名为mingw64
与cmake
- 并在对应文件夹中通过新建txt 文件名称来标注版本信息
- 这样能够实现环境变量不用更改的情况下进行相关的版本更新管理
- 后文教程图片中的文件夹位置为参考教程中的内容,明白意思即可
2.1 一、安装 MinGW-w64
2.1.1 下载解压 MinGw-W64
进入 MinGw-w64官网https://www.mingw-w64.org/,点击Download,点击MingW-W64-builds
找到 Installation: Github,点击跳转到 Github 页面。这里不推荐很多教程使用的 SourceForge 上下载安装,SourceForge 上构建的版本很久,目前仅支持到 8.1.0,而 github 已经支持到了 13.2.0。其次,SourceForge 虽然有较新的 11.0 版本,但下载完成之后是源码,需要自己手动编译。
跳转到 Github 页面之后,选择适合自己的版本安装,我这里选择 x86_64-13.2.0-release-posix-seh-ucrt-rt_v11-rev0.7z。这里说明一下文件命名的含义,方便大家选择适合自己的版本。
- 文件命名开头为 i686 或 x86_64,代表两种不同的架构,这与电脑使用的 CPU 有关。i686 是 32 位的 Intel x86 架构;x86-64 是 64 位的 Intel x86 架构,实际上由 AMD 发明,也称为 AMD64。目前大部分电脑位 x86_64 架构
- release 是 Github 版本控制的分支,不需要管
- 第三个参数是 posix 或 Win32,代表两种不同的线程模型。posix 是一种跨平台的线程模型,程序将使用 POSIX API,允许使用 std:: thread; win32 是 Windows 原生的线程模型,程序将使用 Win32 API,不允许使用 std:: thread。通常选用 posix
- 第四个参数是 seh 或 dwarf,代表两种不同的异常处理机制。seh 是一种新的异常处理方式,性能较好,但只支持 64 位。dwarf 是一种古老的异常处理方式,稳定性好,但只支持 32 位。
- 第五个参数为 msvcrt 或 ucrt,代表两种不同的 runtime 库。msvcrt 是 Microsoft 的 C 运行时库。这个库包含了许多基本的 C 语言函数,这个库在任何 Windows 机器上都可以找到。然而,每个 Windows 版本的 msvcrt. dll 可能会有些许不同,而且它是 Microsoft 的专有代码。因此,虽然 msvcrt. dll 在部署时可以大大简化工作,但也可能带来一些问题。ucrt 代表 Microsoft 的 Universal C 运行时库,这个库是 Windows 操作系统的一个组件,包含在 Windows 10 或更高版本,以及 Windows Server 2016 或更高版本中。它可以通过 Windows Update 在仍在扩展支持的旧操作系统上使用。选择使用 UCRT,那么程序将使用 Universal CRT,而不是 MSVCRT,这将使程序更兼容 MSVC 编译的二进制文件,但不兼容 MSVCRT 环境。通常选用 UCRT
最后,建议安装次新版本,最新版可能会有一些未知的 bug。
下载完成后,将压缩包解压至合适的位置 (通常为 D 盘,C 盘空间富裕解压到 C 盘也无所谓,如果盘符较多,解压至 EFG 盘…甚至 Z 盘都可以)。
2.1.2 配置系统环境变量
解压完成后,进入设置,在搜索框搜索“高级系统设置”,点击查看高级系统设置
之后点击环境变量
之后找到系统变量下面的 Path,双击进入 Path
之后点击新建
返回文件资源管理器,复制解压出来的文件中 bin 文件夹所在的绝对路径,将其粘贴到上一步新建需要填入路径的位置,之后一路点击确定即可。
使用快捷键 Win+r 打开运行对话框,输入 cmd
在 cmd 窗口中输入 gcc -V,显示 gcc 版本信息,大功告成。
2.2 二、安装 cmake
2.2.1 下载 cmake
点击链接https://cmake.org/download/进入Cmake官网下载页面,点击下载适合的版本,我这里下载Windows x64 版本。
2.2.2 安装 cmake
下载完成后以管理员身份运行安装文件,选择将 Cmake 添加到系统环境变量。
修改安装路径,建议安装在 C 盘之外。
最后点击 Install,完成安装。
使用快捷键 Win+r 打开运行对话框,输入 cmd
在 cmd 窗口中输入 cmake --version,显示 cmake 版本信息,大功告成。
3 vscode 中使用 GCC
3.1 配置 c_cpp_properties. json
创建 c_cpp_properties. json 配置文件:
3.1.1 UI 配置(推荐)
按下 CTRL+shift+P, 调出面板,输入 C/C++,选择“编辑配置 UI”
(5)在弹出的页面中点击编译器路径,进行修改,填入上述装进电脑里的 Mingw 路径;
在下面的 IntelliSense 模式里选择 gcc-x 64
此时会发现左边多了一个. vscode 文件夹,并且里面有一个 c_cpp_properties. json 的文件,点开它
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "D:/Downloads/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
这是我的文件内容,此文件无需修改,可以看到,compilerPath 编译路径是我们刚刚修改的,系统根据我们修改的内容自动生成这个文件。
3.1.2 JSON 配置
“Ctrl+Shift+P”,接着输入“C/C++”,选择“C/C++编辑配置(JSON)”
{
"configurations": [
{
"name": "Win32",
"includePath":
[
"${workspaceFolder}/**",
"E:\\MinGW\\lib\\gcc\\mingw32\\5.1.0\\include\\*" //mingw32中的头文件路径,不设置的话找不到头文件
],
"defines":
[
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "E:\\MinGW\\bin\\gcc.exe", // 这里写你自己的g++的路径
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"configurationProvider": "vector-of-bool.cmake-tools", // 这个很重要,就是这句话在通过cmake引入第三方库的代码补全
"browse":
{
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
3.2 配置 tasks. json
这个文件是专门来执行编译任务的
[!tip]
这里有两种方法:
- 点击上方菜单栏的“终端”>"配置任务"or“配置生成任务”;
- “Ctrl+Shift+P”,输入 task,选择“任务:配置任务”即可。
[!caution]
必须要有程序文件. cpp 才能生成活动文件
选择 gcc. exe 或 g++. exe,一般 C 程序选择 gcc. exe,C++程序选择 g++. exe,不过没关系,二者都可以编译 C 和 C++程序。
选择完成后会在. vscode 文件夹下生成 task. json 文件,打开该文件,需要修改的内容主要为 gcc/g++. exe 的路径,和参数“-o”后面的路径,参数“-o”后面的路径为编译完成后可执行文件生成的路径,根据自己的需求配置。
我这里将编译器配置为 g++,生成可执行文件的路径配置为 build 目录之下,之后点击终端,运行生成任务,即可在指定目录下生成可执行文件。
修改后的 task. json 文件和生成的可执行文件如下图所示。
在终端运行可执行文件,输出 hello,world!
或者:
{
// 这里配置了三个Task
"tasks": [
// Task 1:生成build文件夹
{
"type": "shell", // 这里决定了task的类型,shell类型就是在命令行里运行command的命令,还有一种类型是“process”,这里就不介绍了
"label": "mk_build", // task的名字
"command": "mkdir", // 需要被运行的命令
"args": ["build"], // 传递给command的参数
"options": {
"cwd": "${workspaceFolder}",
},
},
// Task 2:运行cmake
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"-G",
"MinGW Makefiles", // 这里必须定义生成器,否则默认cmake生成的是VS Studio可编译的工程
"${workspaceFolder}"
],
"options": {
"cwd": "${workspaceFolder}/build", // 工作路径,就是说cmake的输出都会放在${workspaceFolder}/build文件夹下
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
// Task 3:运行make
{
"type": "shell",
"label": "build",
"command": "mingw32-make",
"args": ["-j4"],
"options": {
"cwd": "${workspaceFolder}/build",
},
"problemMatcher": [],
"group": {
"kind": "build", // 这里说明这个任务时输入"build"类型的,也就是说明,这是一个生成任务
"isDefault": true
},
"dependsOn": [
"cmake" // 这里设置,说明了这个任务一定要在Task “cmake”执行之后方可执行
]
}
],
"version": "2.0.0"
}
3.3 配置 launch. json
调试代码文件
3.3.1 方法一
[!tip]
- 点击上方菜单栏的“运行”>“打开配置”;
- “Ctrl+Shift+P”,输入 debug,选择“调试:打开 launch. json”即可。
{
"version": "2.0.0",
"configurations": [
// Debug 1,这里也可以配置多个Debug任务,这其实和tasks.json很类似
{
"name": "Win32", // Debug任务名
"type": "cppdbg", // 类型
"request": "launch",
"program": "${workspaceFolder}/build/Main.exe", // 需要调试的应用程序,这是需要按照你的需要进行调整的
"args": [], // 传递参数给应用程序
"stopAtEntry": false,
"cwd": "${workspaceFolder}", // 当前工作路径
"environment": [{"name": "PATH","value": "${PATH};D:/software/opencv/build-gcc/bin;D:/software/aruco/bin"}], // 这里需要特别注意,这里要把应用程序运行需要的动态链接库的路径,放进来,这里也需要你根据自己需要进行调整,我在这里给出一个示范
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:/MinGW/bin/gdb32.exe", // 这里需要填写你自己的gdb.exe的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
3.3.2 方法二
回到 hello. cpp 文件内容下,点击运行,启动调试,选择 C++(GDB/LLDB),再选择添加默认配置,或者选择 g++. exe, 都会出现 launch. json 文件。 //八成产生不了
到要产生 launch. json 的时候,先回到 cpp 下,点左边的 debug 小虫子按钮,点击要自定义运行和调试创建 launch. json 文件,选择 c++(GDB/LLDB),然后就能产生空的……,把我的复制过去改一下……就这样吧
这是我的 launch. json 文件。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "D:/Downloads/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:/Downloads/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}
若使用默认配置,一定要和我的 launch. json 文件进行比对,该修改的要进行修改。
- 注意修改"externalConsole": true,
- 注意看 launch. json 中的各个路径的起始,路径中的"/“,”"也要注意。
- ctrl+s 保存 launch. json
3.3.3 方法三
首先点击调试,创建 launch. json 文件:
然后选择 C++(GDB/LLDB)。
这时在我们的文件目录下面就生成了一个 launch. json 文件
然后点击添加配置:选择 C/C++(gdb)启动
这是生成的默认的配置信息,当然我们也许需要进行改造一下:
默认信息:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
在这里我们需要改两个地方:
如果你的 mingw 64 也是和我一样的路径:D:\mingw 64\bin\gdb. exe
修改完之后得到了新的配置信息:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\${workspaceRootFolderName}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
3.3.4 开始调试
当 launch. json 文件生成后,我们只要打断点开始调试就行。
调试的快捷键和 VS 系列的 IDE 是一样的,如:
F 9- 打断点/取消断点
F 5-启动调试
F 11-逐语句调试
F 10-逐过程调试
启动调试后,也是可以使用监视窗口查看变量等程序执行过程中的信息。
4 vscode 中配置 Cmake
首先,在 vscode 中安装 Cmake 插件
安装完成后,使用快捷键 Ctrl+Shift+P 或者直接在上方搜索框输入“Cmake:p”,选择快速入门,根据指引构建 Cmake 项目
输入项目名称,任意都行
选择创建 C++项目
选择创建可执行文件
选择完成后,即生成了完整的 cmake 项目。打开 CMakeLists. txt,修改一些配置。
- 最小版本选择的过低会提示不再兼容的警告,只需在后面跟上最大版本号即可,注意自己电脑上本机的 cmake 版本号要包含在最小版本号到最大版本号之间
- add_execuable 中,要将 main. cpp 改成自己 cpp 文件的名称
配置完成后在终端逐步输入以下命令,编译文件并生成可执行文件。这里需要注意的是,在 Unix 系统下,原生 GCC 编译器支持 make 命令,而在 Windows 下,Mingw-w64 使用的是 mingw32-make 命令,习惯的 Unix 系统开发的小伙伴可能在这里频繁适应 make 命令构建,不断报错怀疑人生。出了使用 mingw32-make 命令替代之外,还可以在 Mingw-w64/bin 目录下找到 wingw32-make. exe,复制文件,粘贴在 bin 目录下,改名为 make. exe,此时就可以愉快的使用 make 命令了。
还有一种更简洁的方式,在 vscode 中,直接点击左下角的生成,即可生成可执行文件。
版权归原作者 池鴻 所有, 如有侵权,请联系我们删除。