windows 下使用 vscode + mingw 完成简单 c 或 cpp 代码的运行与调试

本文为原链的镜像链接,更新可能不及时,如有能力,请访问原始链接。

参考

  1. 基于 VS Code + MinGW-w64 的 C 语言/C++简单环境配置,专致小白

安装

环境:Win10 21H2 19044.1381 + mingw + vscode 1.74.3 + C/C++ Extension Pack 插件

国内镜像盘: 链接 密码:1dcs

简单来说共分为 4 步

  1. 下载 mingwvscode插件 并安装
  2. 添加 mingw 编译链到系统环境变量 Path
  3. 拷贝 tasks.jsonlaunch.json 到要运行的代码目录.vscode文件夹中
  4. 修改 tasks.jsonlaunch.jsongccg++gdb 路径

安装 vscode 和插件

  • 下载 vscode 并安装
  • 安装 C/C++ Extension Pack 插件

配置 mingw

下载 mingw 编译链

此处下载 windows 编译链,编译链命名方式如:系统-线程模型-异常处理模式

  • 系统
    • x84_64 64 位可执行文件
    • i686 32 位可执行文件
  • 线程模型
    • win32
    • posix
  • 异常处理方式

根据自己的系统选择,推荐下载最新的,我这里是 64 位系统,线程模型选择 win32,异常模式随便选

选择 x86_64-win32-seh
在这里插入图片描述

需注意:win 下如线程模式使用 posix,会造成 powershell 下无法通过编译链生成 a.exe,推荐使用如下图中工具链
在这里插入图片描述

配置环境变量

将在下载 mingw 编译链中下载的编译链解压到路径 xxx 下,记住该路径

windows 键 + R 打开 运行,输入 sysdm.cpl,回车进入
在这里插入图片描述

点击 高级
在这里插入图片描述

点击 环境变量 添加 mingw 工具链路径到 Path
在这里插入图片描述

下载后解压的工具链路径:
在这里插入图片描述
推荐在系统变量中的 Path 下添加刚刚下载的编译链的路径 xxx + \bin

比如你下载后解压的路径为 C:\1\mingw64,那么在此处就要添加 C:\1\mingw64\bin
在这里插入图片描述
环境变量配置:添加后不要忘记点确定

在这里插入图片描述

配置 vscode 环境

将下述代码保存为launch.json 或者直接使用镜像中的 .vscode中的launch.json,修改配置文件中 launch.jsongccg++gdb 路径

launch.jsonmiDebuggerPath 修改为你本地 mingw 中的 gdb 路径

{
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\1\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ],
    "version": "2.0.0"
}

将下述代码保存为tasks.json 或者直接使用镜像中的 .vscode中的tasks.json,

tasks.json 中的 cbuildcommand 改为你本地 gcc 的路径,cppbuildcommand 改为你本地 g++ 的路径

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

最终 Vscode 工程目录结构如下,测试代码来自 hello-algo,在此感谢大佬 @Krahets


C:\Users\Administrator\Desktop\TEST\code>tree /F
文件夹 PATH 列表
卷序列号为 DE24-5DAC
C:.
├─.vscode
│      launch.json
│      tasks.json
│
└─codes
    ├─c
    │  │  CMakeLists.txt
    │  │
    │  ├─chapter_array_and_linkedlist
    │  │      array.c
    │  │      CMakeLists.txt
    │  │      linked_list.c
    │  │
    │  ├─chapter_computational_complexity
    │  │      CMakeLists.txt
    │  │      time_complexity.c
    │  │      worst_best_time_complexity.c
    │  │
    │  ├─chapter_sorting
    │  │      bubble_sort.c
    │  │      CMakeLists.txt
    │  │      insertion_sort.c
    │  │
    │  ├─chapter_stack_and_queue
    │  │
    │  ├─chapter_tree
    │  │      binary_search_tree.c
    │  │      binary_tree.c
    │  │      binary_tree_bfs.c
    │  │      binary_tree_dfs.c
    │  │      CMakeLists.txt
    │  │
    │  └─include
    │          CMakeLists.txt
    │          include.h
    │          include_test.c
    │          list_node.h
    │          print_util.h
    │          tree_node.h
    │
    ├─cpp
    │  │  .gitignore
    │  │  CMakeLists.txt
    │  │  Makefile
    │  │
    │  ├─chapter_array_and_linkedlist
    │  │      array.cpp
    │  │      linked_list.cpp
    │  │      list.cpp
    │  │      my_list.cpp
    │  │
    │  ├─chapter_computational_complexity
    │  │      leetcode_two_sum.cpp
    │  │      space_complexity.cpp
    │  │      time_complexity.cpp
    │  │      worst_best_time_complexity.cpp
    │  │
    │  ├─chapter_hashing
    │  │      array_hash_map.cpp
    │  │      hash_map.cpp
    │  │
    │  ├─chapter_searching
    │  │      binary_search.cpp
    │  │      hashing_search.cpp
    │  │      linear_search.cpp
    │  │
    │  ├─chapter_sorting
    │  │      bubble_sort.cpp
    │  │      insertion_sort.cpp
    │  │      merge_sort.cpp
    │  │      quick_sort.cpp
    │  │
    │  ├─chapter_stack_and_queue
    │  │      array_queue.cpp
    │  │      array_stack.cpp
    │  │      deque.cpp
    │  │      linkedlist_queue.cpp
    │  │      linkedlist_stack.cpp
    │  │      queue.cpp
    │  │      stack.cpp
    │  │
    │  ├─chapter_tree
    │  │      binary_search_tree.cpp
    │  │      binary_tree.cpp
    │  │      binary_tree_bfs.cpp
    │  │      binary_tree_dfs.cpp
    │  │
    │  └─include
    │          include.hpp
    │          ListNode.hpp
    │          PrintUtil.hpp
    │          TreeNode.hpp
    │  ...
    │
    ├─java
    │ ...
    ├─python
    │ ...
    ├─rust
    │ ...
    ├─swift
    │ ...

C:\Users\Administrator\Desktop\TEST\code>

测试

首先,通过 Vscode 打开工程(含有 .vscode 文件夹的目录),在打开 c 文件,根据右上角选择调试还是运行,也可以通过快捷键调试(F5)

在这里插入图片描述

如下为调试过程中的截图:

gdb 调试 c 文件

在这里插入图片描述

gdb 调试 cpp 文件
在这里插入图片描述

  • 17
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
要配置VS Code与MinGW,您需要按照以下步骤进行操作: 1. 首先,确保您已经安装了VS Code和MinGW。 2. 在VS Code中,打开"File"菜单,选择"Preferences",然后选择"Settings"。 3. 在设置面板中,搜索并找到"C/C++: IntelliSense"选项。点击该选项旁边的"Edit in settings.json"链接。 4. 这将打开一个名为`c_cpp_properties.json`的文件。在这个文件中,找到`"compilerPath"`字段,并将其设置为指向MinGW安装目录下的g++.exe的路径。例如:`"compilerPath": "C:\\MinGW\\bin\\g++.exe"`。 5. 保存并关闭`c_cpp_properties.json`文件。 6. 接下来,您需要创建一个新的C++项目或打开现有的C++项目。 7. 在项目根目录下创建一个名为`.vscode`的文件夹(如果还没有),然后在该文件夹下创建一个名为`tasks.json`的文件。 8. 在`tasks.json`文件中,添加以下配置: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared" }, "problemMatcher": { "owner": "cpp", "fileLocation": ["relative", "${workspaceFolder}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } ``` 9. 保存并关闭`tasks.json`文件。 现在,您已经成功配置了VS Code与MinGW。您可以使用VS Code来编写、调试和构建C++项目了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值