20230512-VSCode-配置C++17-win11-22h2

news2024/11/25 2:23:49

20230512-VSCode-配置C++17-win11-22h2

一、软件环境

  • 标签:C++ VSCode w64devkit gcc12
  • 分栏:C++
  • 操作系统:Windows11 x64 22h2
  • 编译器:vscode-1.78.2 w64devkit-1.18.0

二、操作步骤

1. 下载安装VScode

官网

打开官网【https://code.visualstudio.com/#alt-downloads】,选择【System Installer】【x64】,按住ctrl键点链接(这样从新窗口打开)。建议用下载工具下载。

在这里插入图片描述

保留到本地,当前最新版本为【1.78.2】。

安装VSCode

过程文字描述如下:

我同意;

选安装目录【C:\Program Files\Microsoft VS Code】;

开始菜单文件夹【Visual Studio Code】;

选择附加任务,勾选【全部】,如图:

在这里插入图片描述

点击安装,完成。

注:网盘备份位置【3-软件相关-software>1-IDE-编译器>1-vscode】。

2. 下载配置w64devkit-1.18.0

没有选择MinGW是因为最新版本支持到gcc-8.1,无法编译C++17下的filesystem库。

官网

打开官网【https://github.com/skeeto/w64devkit/releases/tag/v1.18.0】,选择【w64devkit-1.18.0.zip】;

如图:

在这里插入图片描述

保存到本地。

注:网盘备份位置【1-IDE-编译器>2-mingw】。

配置gcc环境变量

将压缩文件解压到【D:\1-libs\w64devkit-1.18.0】,该目录可自定义,路径【不要包含中文】;

进入bin目录【D:\1-libs\w64devkit-1.18.0\w64devkit\bin】,复制当前路径。

按win键搜索【env】,选择【编辑系统环境变量】,打开系统属性对话框,点击环境变量,如图;

在这里插入图片描述

选择用户变量,【Path】【编辑】,新建【D:\1-libs\w64devkit-1.18.0\w64devkit\bin】,如图;

在这里插入图片描述

点击三次确定,完成。

打开cmd,输入【gcc -v】验证。配置正确则显示【gcc version 12.2.0】,如图。

在这里插入图片描述

3. 配置VScode插件

  • 打开VSCode,搜索插件【chinese】【C/C++】,安装后重启。
  • 点击C/C++插件右正解的设置按钮【安装另一个版本】,切换C/C++插件至1.14.5版本。如图:
    在这里插入图片描述

个人习惯不用最新版本,这里选1.14.5,也可以跳过这一步。

在这里插入图片描述

4. 测试代码

  • 新建文件夹,改为英文名进入,用VSCode打开该文件夹
  • 新建文本文件,命名为cpp17-filesystem-test.cpp(文本编码:Unix(LF),UTF-8),可用notepad++查看,如图

在这里插入图片描述

  • 编写代码如下:
// cpp17-filesystem-test.cpp
// create:  2023-05-12 10:31:32
// w64devkit-1.18.0,开源库,gcc-12.2

#include <iostream>

#include <filesystem>   //C++17

namespace fs = std::filesystem;

int main(int argc, char** argv)
{
    fs::path example_a = "H:\\2-git\\1-csdn-docs\\v0\\csdn_codes\\2023\\5\\12\\512a\\0-src";
    // fs::path example_a = "../";

    if (!fs::exists(example_a))
    {
        return -1;
    }

    std::cout << "string: " << example_a.string().c_str() << '\n';
    std::cout << "string: " << example_a.generic_string().c_str() << '\n';  //转斜杠

    std::cout << "Hello World!测试中文乱码!\n";

    return 0;
}
  • 选中cpp文件后,点击VSCode菜单,运行,启动调试(或按F5),在下方【终端】可看到运行结果,如图。

在这里插入图片描述

5. 调整优化

程序正常运行后会在当前目录生成【.vscode】目录,该目录下会生成task.json文件,该文件可进行一些优化设置。

本文配置参考如下:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\1-libs\\w64devkit-1.18.0\\w64devkit\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                //"${fileDirname}\\${fileBasenameNoExtension}.exe"
                "${fileDirname}\\Debug\\a.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

5.1 将程序运行在外部控制台

  • 设置终端编码为utf-8

方法是修改注册表【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor】添加字符串【autorun】,值为【chcp 65001】,注意中间有空格。如图:

在这里插入图片描述

  • 添加launch.json

点击VSCode左边栏的【运行和调试】,点击【创建launch.json】,如图:

在这里插入图片描述

修改内容如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\Debug\\a.exe",//这个地方和task.json保持一致
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,//这个地方默认为false,改为true弹出cmd窗口
            "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
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"//这是默认文件后手动添加的,和task.json保持一致
        }
    ]    
}

注意注释位置描述的两个json文件要保持一致的地方。

按F5运行,正常情况会弹出终端,中文显示乱码。如图:

在这里插入图片描述

因为win11的终端utf-8有bug,所以不推荐用此方法。

5.2 中文乱码问题

win11暂时只能通过直接控制台运行a.exe解决乱码问题,或者只用VSCode的终端进行调试。如图:

在这里插入图片描述

5.3 修改exe输出目录

修改task.json如下,就能实现在Debug目录生成exe:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\1-libs\\w64devkit-1.18.0\\w64devkit\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                //修改这个地方,Debug是自定义目录:"${fileDirname}\\${fileBasenameNoExtension}.exe"
                "${fileDirname}\\Debug\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

全文完。

参考文献

  • 《VScode中配置C语言/C++运行环境》,火星动力猿,B站。
  • 《将powershell、cmd和vscode终端的编码永久修改成utf-8》,夕阳的云。

更新历史

2023-05-12 10:07:43,创建,东盛苑。

2023-05-12 18:00:30,发布,CSDN上传。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习笔记——数值稳定性、模型初始化与激活函数

机器学习笔记——数值稳定性、模型初始化与激活函数 引言数值稳定性——梯度爆炸小插曲&#xff1a;关于对角阵 Diag [ σ ′ ( W t ⋅ h t − 1 ) ] \text{Diag}[\sigma(\mathcal W_t \cdot h_{t-1})] Diag[σ′(Wt​⋅ht−1​)]的解释梯度爆炸的问题 如何让参数更新更加稳定方…

移动机器人运动规划---基于图搜索的基础知识---配置空间

配置空间 机器人规划的配置空间概念&#xff1a;一个空间包含所有机器人自由度的机器人配置&#xff0c;描述为C-space 机器人配置&#xff1a;表示对机器人上面所以点的位置的描述机器人自由度&#xff1a;规划的时候用最少的坐标数量去表示机器人配置&#xff0c;例如无人机…

NFTScan: 蓝筹 NFT 跌幅严重,如何保持竞争力?

最近的市场大跌影响了 NFT 二级市场&#xff0c;市场情绪冷淡下跌严重&#xff0c;交易量和买家骤然下降&#xff0c;而蓝筹作为市场里的中流砥柱也表现不佳。以 BoerdApeYachtClub 为首的等主流 NFT 价格下跌超过 20%。此外&#xff0c;随着 PFP 的热潮已经过去&#xff0c;市…

【文章学习系列之模型】DLinear

本章内容 文章概况模型流程实验定量结果定性结果其他对比 总结 文章概况 《Are Transformers Effective for Time Series Forecasting?》是2023年发表于AAAI上的一篇文章。该文章以“Transformer在时序预测中是否有效”为论点展开讨论&#xff0c;并提出一种非Transformer系列…

SwiftUI 4.0 中 List 显示层级数据的子视图在展开和收起操作时无动画的解决

问题现象 在 SwiftUI 4.0(iOS 16+)中,一个超简单 List 视图层级子视图的收放操作竟然没有动画,这着实有点让人不爽: 从上图可以看到:我们在点击 List 子项时不仅毫无收放动画可言,而且在展开时还有卡顿,显得非常生硬。 以上代码在目前最新的 iOS 16.4.1(a) 系统中测试…

自动化测试如何做?接口自动化测试框架必备的9个功能,测试老鸟总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 当你准备使用一个…

PyQt5桌面应用开发(13):QGraphicsView框架

本文目录 PyQt5桌面应用系列PyQt5 与艺术codeQGraphicsView Framework几何QGraphicsView应用QGraphicsItem应用keyPressEvent QObject cross QThread/thread总计 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xf…

【Linux】进程控制(文件操作符收尾+重定向)

上一回进程与文件系统我们主要看了很多文件描述符的知识 1.如何理解一切皆文件&#xff1f; 每个设备被打开时&#xff0c;OS给每个文件创建一个自己的struct file 里面填充自己的属性以及自己的缓冲区&#xff0c;其中还有函数指针&#xff0c;里面保存函数地址&#xff0c;通…

京东CEO徐雷突然退休,CFO许冉接任成为首位女CEO

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 京东集团重大人事变动&#xff0c;京东集团CEO徐雷将退休&#xff0c;才49岁&#xff0c;CFO许冉将成为京东集团新任CEO。京东将迎来首位女CEO。 徐雷在48岁被任命为京东CEO&#xff0c;49岁退休。…

IS220PRTDH1A固态过载继电器不会产生热量以方便跳闸

IS220PRTDH1A固态过载继电器不会产生热量以方便跳闸 一旦触发动作发生&#xff0c;双金属片冷却并自行重塑&#xff0c;自动重新启动电路。电机在过载未消除的情况下重新启动&#xff0c;并会一次又一次地点火和重新启动。&#xff08;假设自动重启 这种类型的继电器也可以配备…

Python的画图模块turtle使用详解

简介&#xff1a;Turtle是Python语言中一个很流行的简单的绘图工具。你可以把它理解为一个小海龟&#xff0c;只听得懂有限的指令。它在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的控制&#xff0c;在这个平面坐标系中移动&am…

【中级软件设计师】—(下午题)试题三精讲总结(四十二)

【中级软件设计师】—&#xff08;下午题&#xff09;试题三精讲总结&#xff08;四十二&#xff09; 一、关系 二、UML中的图 A包含B&#xff0c;那么A执行操作前必须要先执行B 试题一&#xff08;2021年下半年&#xff09; 试题2&#xff08;2021年上半年&#xff09; 官方…

【C++初阶】类和对象下篇

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C初阶 ⭐代码仓库&#xff1a;C初阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

板材激光切割机切割穿孔时注意的几个问题

激光切割设备广泛应用于钣金、五金制品、钢结构、汽车配件、广告、工艺品等行业&#xff0c;成为加工行业不可缺少的环节。在厚板加工中穿孔时间占很大比重&#xff0c;随着加工板材越来越厚&#xff0c;板材激光切割机切割穿孔也会相应地增加难度。 激光切割机两种常见的穿孔方…

druid 远程命令执行 (CVE-2021-25646)

漏洞原理 该漏洞主要就是根据Jackson解析特性(解析name为""时)会将value值绑定到对象(JavaScriptDimFilter&#xff0c;type为javascript时指定的)的对应参数(config)上&#xff0c;造成JavaScriptDimFilter中function属性中的javascript代码被执行。攻击者可以构造…

Redis高级数据结构HyperLogLog

HyperLogLog(Hyper[ˈhaɪpə(r)])并不是一种新的数据结构(实际类型为字符串类型)&#xff0c;而是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数的统计&#xff0c;数据集可以是IP、Email、ID等。 如果你负责开发维护一个大型的网站&#xff0c;有一天产品…

pytorch移植华为mindspore记录

因为某个需求&#xff0c;需要把原来pytorch的神经网络移植到华为的mindspore上 这边记录下遇到的坑 附上mindspore的官方教程&#xff1a; https://mindspore.cn/tutorials/zh-CN/r2.0/advanced/compute_graph.html 这边附上需要移植的网络&#xff0c;以tensorflow和pytorch…

LeetCode 链表OJ分享

目录 删除排序链表中的重复元素回文链表剑指Offer 06.从尾到头打印链表复制带随机指针的链表 删除排序链表中的重复元素 链接: link 题目描述&#xff1a; 题目思路&#xff1a; 本题思路使用双指针&#xff0c;以示例二为例如下图&#xff1a; 如果head->val等于next-&…

ihateniggers:针对Python开发者的Windows远控木马分析

背景 墨菲安全实验室在持续监测开源软件仓库中的投毒行为&#xff0c;5 月 9 日起发现 4 个包含 “ihateniggers” 远程控制木马的 Python 包被 nagogygmail.com 邮箱关联的账号发布到 PyPI 仓库&#xff0c;试图针对Windows系统下 Python 开发者进行攻击。木马利用了discord、…

各种顺序表和链表的实现代码

目录 一、什么是线性表 二、顺序表 2.1什么是顺序表 2.2静态顺序表的代码实现 2.3动态顺序表的代码实现 三、链表 3.1什么是链表 3.2不带头单向不循环链表的代码实现 3.3带头双向循环链表的代码实现 四、顺序表和链表的区别 一、什么是线性表 线性表是n个具有相同特性…