本页摘自0xFFFF CS Wiki

配置MinGW

  1. 在 Windows 上安装 C/C++ 编译器 (gcc/g++) 和调试器 (gdb) ,在这里下载

    • 由于Sourceforge速度慢,这里提供x86_64-posix-seh OneDrive外链的zip压缩包

  2. 下载完成后解压文件夹到你想要的位置,以C:\Program Files\为例。接下来在环境变量(控制面板 -> 搜索栏搜索环境变量 -> 系统变量选择”Path”单击”编辑” -> 新建)中加入工具链所在的目录。

    • 测试:按下 Win+R 输入 cmd 打开命令行,分别执行 gcc --version g++ --version gdb --version 三个命令。如果没有提示找不到程序并出现与下图类似的结果,那么编译环境算是配置好了

配置VSCode

  1. VSCode 可以在官网下载,双击安装之后稍等片刻就可以启动了。进入VSCode之后在左侧选择扩展,搜索C/C++安装插件

  2. 接着我们来建一个 C/C++ 项目。新建一个目录,在目录下新建一个.c文件,用 VSCode 打开这个文件夹

  3. 新建一个配置

  4. 在弹出来的 launch.json 文件中用以下配置覆盖。
    (若在刚才没有进行添加环境变量的操作,则将两处 “gdb.exe” 改为你解压的 MinGW 中 gdb 的完整路径。)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    {
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    {
    "name": "C++ Debug(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
    "type": "cppdbg", // 配置类型,这里只能为cppdbg
    "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
    "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
    "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
    "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
    "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
    "environment": [],
    "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
    "internalConsoleOptions":"neverOpen",
    "MIMode": "gdb",
    "miDebuggerPath": "gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
    "preLaunchTask": "g++_compile", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
    "setupCommands": [
    {
    "description": "Enable pretty-printing for gdb",
    "text": "-enable-pretty-printing",
    "ignoreFailures": true
    }
    ]
    },
    {
    "name": "C Debug(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
    "type": "cppdbg", // 配置类型,这里只能为cppdbg
    "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
    "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
    "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
    "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
    "cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
    "environment": [],
    "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
    "internalConsoleOptions":"neverOpen",
    "MIMode": "gdb",
    "miDebuggerPath": "gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
    "preLaunchTask": "gcc_compile", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
    "setupCommands": [
    {
    "description": "Enable pretty-printing for gdb",
    "text": "-enable-pretty-printing",
    "ignoreFailures": true
    }
    ]
    }

    ]
    }
  5. 接下来在菜单栏上选择“终端”->“配置默认生成任务” ( Terminal -> Configure Default Build Task),一路选择第一个选项,然后再弹出来的 tasks.json 里面用以下配置覆盖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    {
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
    {
    "label": "g++_compile",
    "command": "g++",
    "args": ["-g","${file}","-o","${workspaceRoot}\\${fileBasenameNoExtension}.exe"],
    "problemMatcher": {
    "owner": "cpp",
    "fileLocation": ["relative", "${workspaceRoot}"],
    "pattern": {
    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
    "file": 1,
    "line": 2,
    "column": 3,
    "severity": 4,
    "message": 5
    }
    }
    },
    {
    "label": "gcc_compile",
    "command": "gcc",
    "args": ["-g","${file}","-o","${workspaceRoot}\\${fileBasenameNoExtension}.exe"],
    "problemMatcher": {
    "owner": "c",
    "fileLocation": ["relative", "${workspaceRoot}"],
    "pattern": {
    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
    "file": 1,
    "line": 2,
    "column": 3,
    "severity": 4,
    "message": 5
    }
    }
    }
    ]
    }