Windows Vscode C++17/20 配置教程

摘要
gcc 8.1.0升级至11.2.0

Powered by:NEFU AB-IN

ps:ps:如果下到D盘,那么路径都和我一样,如果下到C盘,别忘了改路径!

Windows Vscode C++17/20 配置教程

起因

在博主打比赛时,对mapmap进行autoauto的遍历操作,会导致编译警告,即WarnningWarnning,显示只有c++17c++17可以用这个特性,但是可以编译,只是会用错误波浪线和编译警告

由于一开始不知道gccgcc版本十分旧,一直用的是codeblockscodeblocks里自带的mingw64mingw64,而且也不知道mingwmingw常年不更新版本,就冒然在coderunnercoderunner中修改了命令,将c++11c++11改成了c++17c++17

1
cd "d:\Code\Vscode\ACM\CF\2021.10.9\" ; if ($?) { g++ -std=c++17 a.cpp -o a } ; if ($?) { .\a }

结果:(由于博主已经配置完了,就拿codeblockscodeblocks做个错误演示)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ltJ0Yte-1633781781366)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009193659059.png)

貌似就是fs_pash.hfs\_pash.h有问题,搜了很久也没个说法

于是博主开始研究怎么升级gccgcc版本,可以使用c++17c++17

  • 目前gccgcc版本:8.1.08.1.0
  • 在这里插入图片描述

下载MSYS2

  • 介绍MSYS2

    由于 MinGW 本身仅代表工具链,而在 Windows 下,由于Windows的terminal cmd窗口使用感受太差,以及配套的命令行工具不够齐全,因此,MinGW 开发者从曾经比较旧的 Cygwin 创建了一个分支,也用于提供类 Unix 环境。但与 Cygwin 的大而全不同,MSYS 是冲着小巧玲珑的目标去的,所以整套 MSYS 以及 MinGW,主要以基本的 Linux 工具为主,大小在 200M 左右,并且没有多少扩展能力。

    由于 MinGW 万年不更新,MSYS 更是,Cygwin的许多新功能 MSYS 没有同步过来,于是 Alex 等人建立了新一代的 MSYS 项目。仍然是 fork 了 Cygwin(较新版),但有个更优秀的包管理器 pacman,有活跃的开发者跟用户组,有大量预编译的软件包(虽然肯定没有Cygwin多)

    msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。

  • 官网下载

    MSYS2

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pu3yUK1x-1633781781372)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009192455303.png)

    接着跟着教程走

    安装: msys2-x86_64-20210725.exe

    我的安装路径为 D:\msys64

  • 安装mingw64

    由于msys2msys2是个工具链,我们还是要从这个编译套件中下载mingw64mingw64

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HG9dqBS-1633781781377)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009194452711.png)

  • 安装gcc gdb make

    查找gccgcc,找到winwin版本的gccgcc

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FCwMPNGL-1633781781380)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009194731566.png)

    根据自己的电脑的OSOS选择版本,这里我选择mingww64x86_64gccmingw-w64-x86\_64-gcc

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KareIIVW-1633781781381)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009194853029.png)

    可以看到安装需要的命令

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CBKZm1Jg-1633781781383)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009195103816.png)

    如果安装完成,打开msys2msys2,并进行更新(如果需要换源,可以百度自行搜索)

    1
    pacman -Syu --disable-download-timeout

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSzPIzB7-1633781781384)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009195201764.png)

    之后去往安装的路径,可以看到msys2.exemsys2.exe

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6aSX784l-1633781781385)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009195339471.png)

    打开并继续进行更新

    1
    pacman -Syu --disable-download-timeout

    之后进行gcc,gdb,makegcc,gdb,make的安装

    1
    2
    3
    pacman -S mingw-w64-x86_64-gcc  --disable-download-timeout
    pacman -S mingw-w64-x86_64-make --disable-download-timeout
    pacman -S mingw-w64-x86_64-gdb --disable-download-timeout

    最后,再进行一次更新

    1
    pacman -Syu --disable-download-timeout
  • 设置环境变量

    之前大家应该都设置过,这里就不细说了

    直接将原有的路径替换为D:\msys64\mingw64\bin即可

Vscode配置

  • Vscode插件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IusDsG4Q-1633781781387)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009195855186.png)

插件首先要配置好,这里推荐coderunnercoderunner,自定义命令

  • 配置cpp

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFVAbLSS-1633781781389)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009200115528.png)

  • 配置 coderunner

    打开settings.jsonsettings.json,找到coderunnercoderunner的配置选项处

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEboD2Z1-1633781781389)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009200237900.png)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    "code-runner.executorMap": {
    "javascript": "node",
    "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
    "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    "php": "php",
    "python": "cd $dir && python -u $fileName"
    }
  • 配置 C/C++ IntelliSense

    为了不让波浪线的出现,要设置标准

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRQp3Qxv-1633781781390)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009200428645.png)
    .vscode.vscode的文件夹中的,配置c_cpp_properties.jsonc\_cpp\_properties.json文件
    在这里插入图片描述

  • 配置 Debug

    修改本地文件夹下的launch.jsonlaunch.jsontask.jsontask.json

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rltU99FL-1633781781390)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009200930260.png)

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjc8RA7j-1633781781391)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009200938234.png)

大功告成

效果

版本11.2.011.2.0
在这里插入图片描述

VscVsc编译界面
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqCiD9Rh-1633781781392)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009201510630.png)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9tgtJvGF-1633781781392)(C:sersiusyppDataoamingyporaypora-user-imagesmage-20211009201537573.png)

使用搜索:谷歌必应百度