win10 VScode配置GCC(MinGW)

iX發表於2022-02-22

前提

  1. 安裝 Visual Studio Code

  2. 安裝 C/C++ 擴充套件 for VS Code 也可以在vscode的extension介面搜尋'c'查詢外掛安裝

    image-20220222160721506

  3. 獲取最新的 Mingw-w64 ,或者通過 MSYS2 安裝

  4. 新增 Mingw-w64的bin資料夾路徑到系統環境變數中,bin路徑取決於Mingw-w64的安裝路徑,C:\XXX\XXX\mingw64\bin示例,步驟如下

    1. 在底欄的搜尋框中,搜尋“設定”,開啟win設定程式
    2. 在設定中,搜尋系統環境變數
    3. 選擇系統中的path變數(個人使用者的也可以),點選編輯
    4. 新建一個環境變數,將Mingw-w64的bin資料夾路徑新增進去。
    5. 點選確定儲存更新路徑,需要重新開啟cmd才能路徑生效
  5. 檢查是否成功安裝,開啟cmd,輸入

    gcc -v
    

    如果沒有成功輸出版本號,那說明安裝不成功

Hello World!

建立一個空資料夾projects用來存放vscode專案檔案。再projects中建立一個子資料夾helloworld,然後在vscode中開啟這個helloworld資料夾。

可以在cmd完成這項操作:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

code .命令是指在此資料夾中開啟vscode。

新增原始檔

新增helloworld.c

win10 VScode配置GCC(MinGW)

複製下面程式碼,新增到檔案中

#include <stdio.h>

int main()
{
    printf("Hello world!");

    return 0;
}

編譯

這一步要建立tasks.json,檔案是用於告訴vs code怎麼編譯程式

在主選單中,選擇 Terminal > Configure Default Build Task. 選擇一個編譯器點選,c語言就選擇gcc,c++就選擇g++

win10 VScode配置GCC(MinGW)

選擇之後,tasks.json會被建立在.vscode資料夾中。檔案內容與下文相似

{
  "tasks": [
    {
      "type": "cppbuild",
      "label": "C/C++: gcc.exe build active file",
      "command": "C:/msys64/mingw64/bin/gcc.exe",
      "args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
      "options": {
        "cwd": "${fileDirname}"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"
    }
  ],
  "version": "2.0.0"
}

command: 指定編譯器的路徑

args: 指定將傳遞給gcc的命令列引數,這些引數必須按照編譯器期望的順序指定。這些引數告訴gcc獲取活動檔案(${file}),先編譯它,然後在當前資料夾(${fileDirname})建立一個可執行檔案,其名字與活動檔案一樣,但是字尾是.exe。(${fileBasenameNoExtension}.exe)

label: 這是你在任務列表中看到的,可以隨便給它起個名字。

"isDefault": true 指定該任務將在按下Ctrl+Shift+B時執行,只是為了方便使用,也可以在 Terminal: Run Build Task 中編譯檔案

執行編譯

  1. 回到helloworld.c,可以通過Ctrl+Shift+B快捷鍵編譯,也可以點選Terminal: Run Build Task編譯

  2. 編譯成功之後,會在整合的terminal中輸出類似下圖的資訊

    win10 VScode配置GCC(MinGW)
  3. 點選任何鍵退出介面。執行 dir 命令將會看到新建立的 helloworld.exe

    可以在terminal中執行exe檔案 (helloworld.exe 或者 .\helloworld.exe)

    圖片僅作參考,本例項實際執行輸出為Hello world!

編輯json檔案

使用"${workspaceFolder}\\*.c" 代替 ${file},編譯時會編譯當前資料夾中所有的.c檔案,輸出檔名也要修改為"${fileDirname}\\${fileBasenameNoExtension}.exe"

debug

在此操作中會建立一個launch.json檔案。當你按F5除錯程式時,VS Code需要使用launch檔案來啟動GDB偵錯程式。

  1. 在主選單中,選擇Run > Add Configuration... 然後選取 C++ (GDB/LLDB)
  2. 然後再選取 gcc.exe build and debug active file(c語言就選gcc,c++就選取g++)

完成操作後會建立一個launch.json檔案,內容與下方類似

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "g++.exe - Build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "C/C++: g++.exe build active file"
    }
  ]
}

program: 設定指定要除錯的程式

stopAtEntry: 預設為false,為true時,debug時會在main函式開頭設定斷點

preLaunchTask: 設定用於指定在啟動前要執行的任務,確保與tasks.jsonlabel保持一致

C/C++ configurations

如果想要對C/C++擴充套件的擁有更多的控制權,需要建立一個c_cpp_properties.json檔案。這將允許你改變設定,如編譯器的路徑,包括路徑,c++標準(預設是c++ 17)以及更多。

  1. 使用快捷鍵Ctrl+Shift+P,搜尋C/C++: Edit Configurations (UI)

    win10 VScode配置GCC(MinGW)
  2. 點選就會開啟設定介面。人為改變設定,就會記錄在c_cpp_properties.json檔案中

相關文章