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

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

文章目录

    • 参考
    • 安装
      • 安装 vscode 和插件
      • 配置 mingw
        • 下载 mingw 编译链
        • 配置环境变量
      • 配置 vscode 环境
    • 测试

参考

  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 文件
在这里插入图片描述文章来源地址https://uudwc.com/A/gVxMG

原文地址:https://blog.csdn.net/qq_33698226/article/details/129031241

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月15日 04:11
vue3中css使用script中定义的变量
下一篇 2023年09月15日 04:15