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上传。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐