VSCode配置C++环境

木头的喵喵拖孩

安装 VSCode

VSCode 下载地址
这个简单,一直下一步就能安装了

安装编译器(MinGW)

MinGW sourceforge
注意打开页面后往下拉,选中x86_64-posix-seh这个版本下载
MinGW 百度云备用下载 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

上面划线内容不适用于 Windows 系统,需要前往 MinGW github release 选择 Windows 构建版本进行下载。

选择构建版本时,应注意选择带有“x86”、“64”、”win32“、“urct”字眼的版本。

i686 前缀的版本肯定可以编译 32 位程序,但是否能编译 64 位程序则取决于编译器版本的所用的异常实现模型–dwarf,seh,sjlj。
sjlj 适合 32/64 位程序(但是它会带来轻微的性能损失,在异常重的代码中有 15%),
dwarf 则只能用于 32 位程序,
seh 只能用于 64 位程序

——mingw 不同版本全解析

说明:这个世界上只有两种操作系统,符合 posix 协议的,和 Windows 。如这个笑话所说的,如果你想要开发 Windows 程序,需要选择 win32 ,而开发 Linux、Unix、Mac OS 等其他操作系统下的程序,则需要选择 posix 。
操作:我只开发在 Windows 下运行的程序,所以选择了 win32 。

——MinGW-w64 安装教程——著名 C/C++编译器 GCC 的 Windows 版本

msvcrt 和 ucrt 的主要区别:
msvcrt 指的是 Microsoft Visual C++运行时库,这是许多 C 和 C++程序在 Windows 上运行所必需的。它提供了标准的 C 库函数和其他与 Microsoft Visual Studio 相关的特定功能。
ucrt 指的是 Universal C Runtime,它是 Windows 10 及更高版本上引入的一个新的 C 运行时库,旨在提供跨 Windows 版本的更一致和更新的 C 标准库实现。与 msvcrt 相比,ucrt 可能包含更多的安全更新和现代 C 标准库特性。

兼容性和部署:
使用 msvcrt 构建的应用程序可能更广泛地兼容旧版本的 Windows,但可能受限于特定于 Visual Studio 的功能和更新。
使用 ucrt 构建的应用程序则可能需要 Windows 10 或更高版本才能运行,但可以获得更好的安全性和与现代 C 标准库的兼容性。

其他共同点:
两个构建版本都针对 x86_64 架构,即 64 位 Windows 系统。
它们都使用了 SEH(Structured Exception Handling)作为异常处理机制,这是 Windows 平台上的标准异常处理机制。
运行时库版本都是 rt_v12,表示它们基于相同的运行时库版本进行构建。
修订版都是 rev0,可能表示它们是同一构建周期内的不同变体。

——文心一言

MinGW 和 MSYS2

也可以选择 MSYS2,但是为了从底层学习编译 C/C++,还是推荐使用 MinGW。

关系:
MSYS2 提供了一个集成了多个开发工具和库的环境,其中包括 MinGW-w64 工具链。因此,在 MSYS2 中,用户可以直接使用 MinGW-w64 来编译和生成 Windows 程序。
MSYS2 和 MinGW 都致力于在 Windows 平台上提供类似于 Linux 的开发环境,但 MSYS2 提供了更全面的环境和工具集。

区别:
MSYS2 是一个更全面的开发环境,提供了 bash shell、版本控制软件、软件包管理系统等多个组件,而 MinGW 主要关注于提供 GCC 编译器和必要的工具及库。
MSYS2 中的 MinGW-w64 是 MSYS2 环境的一个组成部分,而单独的 MinGW 是一个独立的编译器集合。
在使用上,MSYS2 提供了更便捷的软件包管理和环境配置功能,而 MinGW 则更专注于编译器的使用。

——文心一言

配置 MinGW

把下载好的 MinGW 压缩包解压到任意一个目录,然后配置环境变量到 bin 目录,
然后使用下面的命令测试,有输出就配置成功了。

1
gcc -v

如果需要使用 conan,则需要在系统环境变量中配置 CC 和 CXX,使其指向 gcc 和 g++。

配置 VSCode

安装插件

  1. C++ Extension Pack ,提供代码提示、调试等功能,该插件会自动识别刚刚配置好的 MinGW,
  2. C/C++ Project Generator ,一键创建 C/C++工程,使用 ctrl + shift + P 打开所有命令,输入 create c++ project 来创建一个 C++项目

然后按 F5 就可以调试了,编写 C 程序需要使用 gcc 来编译,编写 C++程序需要 g++来编译。

一个有趣的事实: 就本质而言,gcc 和 g++ 并不是编译器,也不是编译器的集合,它们只是一种驱动器,根据参数中要编译的文件的类型,调用对应的 GUN 编译器。更准确的说法是:gcc 调用了 C compiler,而 g++ 调用了 C++ compiler。
由于编译器是可以更换的,所以 gcc 不仅仅可以编译 C 文件,只要是 GCC 支持编译的程序代码,都可以使用 gcc 命令完成编译。
可以这样理解,gcc 是 GCC 编译器的通用编译指令。根据程序文件的后缀名,gcc 指令可以自行判断出当前程序所用编程语言的类别。

——梳理 gcc、clang、mingw、cmake

配置 Task

调试编译的脚本存在于项目根目录下的.vscode 目录下的 tasks.json 文件中,
其中 command 表示 gcc 编译器的位置,
args 表示 gcc 编译器命令行工具的参数,要注意的是如果需要生成一个生产环境的 exe 文件,需要将 -g 参数去掉,该参数是为了方便 gdb 调式用的。

运行 Task

在顶部菜单栏中选择 Terminal->RunTask ,会显示所有可以运行的 Task,需要打开要运行 task 的文件(比如要编译一个 cpp 文件,需要打开这个 cpp 文件,然后运行 task)

参考

安装参考
参考 MinGW 没有 bin 目录的解决方法
MinGW 不同 build 包的区别
VSCode 同时执行多个 Task
PowerShell 无法执行脚本的解决方案

梳理 gcc、clang、mingw、cmake
MinGW-w64 安装教程——著名 C/C++编译器 GCC 的 Windows 版本
MinGW 安装
mingw 不同版本全解析

  • 标题: VSCode配置C++环境
  • 作者: 木头的喵喵拖孩
  • 创建于: 2023-11-03 09:17:27
  • 更新于: 2024-12-18 15:21:25
  • 链接: https://blog.xx-xx.top/2023/11/03/VSCode配置C-环境/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。