在VS Code中使用Mingw-w64


在本篇教程,你配置Windows上的VS Code使用Mingw-w64中的g++和gdb來創建運行在Windows上的程序。

預先要求

為了成功完成本篇教程,你需要做下面幾件事:

  1. 安裝VS Code
  2. 安裝VS Code的C++插件
  3. 安裝Mingw-w64到一個沒有空格的路徑(比如C:/Program Files/這個路徑就不行)。在本篇教程,我們假定安裝在C:\Mingw-w64。
  4. 把Mingw-w64中的bin文件夾加入到Windows的PATH環境變量
    1. 在windows搜索欄鍵入“cmd”,然后選擇命令提示符
    2. 在命令行,使用setx把Mingw-w64的bin路徑加入系統路徑,實際路徑取決於你安裝的Mingw-w64的版本和位置。一個例子:setx path "%path%;c:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin"。
    3. 關閉控制台窗口,因為在這個窗口新路徑並不可用。

創建workspace

在一個新DOS的命令提示符里創建一個新文件夾命名為projects,在這里存放你的所有VS Code項目。再創建一個子文件夾命名為helloworld,進入這個文件夾,然后在其中打開VS Code。這個過程的命令如下:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

code.命令會在當前目錄打開VS Code,並把這個目錄作為你的工作空間(workspace)。在使用智能感知,編譯和debug之前,我們首先要在VS Code上配置Mingw-w64。完成配置時,我們會在一個名為.vscode的子文件夾中有下面三個文件:

  1. c_cpp_properties.json (編譯器路徑和智能感知設置)
  2. tasks.json (指示編譯的信息)
  3. launch.json (debugger的設置)

配置編譯器路徑

1. 按下Ctrl+Shift+P打開命令調色盤(Command Palette),它看起來是這樣的:

2. 輸入“C/C++”然后在下拉表里選擇Edit Configurations(UI)。這會打開C/C++ IntelliSense Configurations頁面。你在這里做出的修改,VS Code會把它們都寫進。vscode文件夾下的c_cpp_properties.json文件。

3. 找到Compiler path項,VS Code會試圖填進一個基於你的系統的默認編譯器。它首先尋找MSVC編譯器,然后找Windows的Linux子系統(WSL)里的g++,然后才是Mingw-w64的g++。如果你安裝了VS或WSL,你要改一下這里,如果你在C:/mingw-w64目錄安裝的8.1.0版本的Mingw-w64,使用Win32線程和SEH異常處理,那么路徑會看起來是這樣:C:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin\g++.ex 。如果你安裝時選擇了不同的選項,則路徑也會有區別。

Compiler path項的設置非常重要。插件使用它推斷C++標准庫頭文件的位置。當插件知道這些文件在哪,它會在你寫代碼時提供許多有用的信息。這些信息叫做智能感知(IntelliSense)。

4. 把智能感知模式(IntelliSense mode)設為gcc-x64

當你的程序包括既不來自你的工作空間,又不來自標准庫路徑的頭文件時,你只需修改Include path設置。

VS Code把這些設置放在了.vscode/c_cpp_properties.json。如果你直接打開這個文件,它看起來差不多是這樣的。

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": ["${workspaceFolder}/**", "${vcpkgRoot}/x86-windows/include"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "windowsSdkVersion": "10.0.17763.0",
      "compilerPath": "C:\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "${default}"
    }
  ],
  "version": 4
}

創建一個編譯任務(build task)

下一步,創建tasks.json文件來告訴VS Code如何編譯程序。這個任務會啟動g++編譯器基於源文件創造一個可執行文件。

  1. 從主菜單,選擇 View > Command Palette 輸入“task”然后選擇 Tasks:Configure Default Build Task. 在下拉菜單,選擇 Create tasks.json file from template ,然后選擇 Others 。VS Code創建一個小型的 tasks.json文件,並在編輯器里打開。
  2. 進入文件,並把整個文件內容替換為下面的代碼片段:
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build hello world",
      "type": "shell",
      "command": "g++",
      "args": ["-g", "-o", "helloworld", "helloworld.cpp"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

command項指明了要運行的程序;在這里是g++.exe。

args數組指明了要傳給g++的命令行參數。這些參數會按照數組中的順序傳給g++。

label的值是你在VS Code 命令調色盤(Command Palette)里能看到的。你可以按照自己的喜好給它命名。

isDefault:true 在group對象里。它指明了這個任務會在按下快捷鍵 Ctrl+Shift+B 時運行。這個屬性是為了方便,如果你把它設置成false,你不得不從命令調色盤輸入Run Build Task來運行。

配置debug設置

下一步,我們配置VS Code,使按下F5可以啟動GCC debugger(gdb.exe)。

  1. 從命令調色盤,輸入“launch”,然后選擇 Debug:Open launch.json。然后選擇 GDB/LLDB 環境。
  2. 關於程序,使用程序名 helloworld.exe (取決於你在tasks.json填的什么)。調整miDebuggerPath值來匹配你的mingw-w64的安裝路徑。
  3. 默認情況下,C++會在main函數的第一行加上一個斷點。stopAtEntry的值如果是true,debugger會在第一行暫停。如果你想忽略它,可以設置為false。
  4. 可選地,把externalConsole設置成true可以在外部的控制台運行程序。

當你完成launch.json文件的配置,它大概會是這樣:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/helloworld.exe",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

在VS Code中使用Mmingw-w64的配置到這里就完成了。這個配置只在當前工作空間(workspace)有效。如果要復用這個配置,只要把這三個JSON文件拷貝到新workspace的.vscode子文件夾下,然后更改一些配置,比如源文件名稱等。

接下來的步驟

  • 瀏覽《VS Code用戶指南》
  • 查看C ++擴展概述
  • 創建一個新的工作區,將.vscodeJSON文件復制到其中,為新的工作區路徑,程序名稱等調整必要的設置,然后開始編碼!

 

本文是對VS Code文檔的部分翻譯,參考原文如下:https://code.visualstudio.com/docs/cpp/config-mingw


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM