在vscode中使用Mingw-w64搭建c++環境

該文章翻譯自官方教程(有部分修改)php


這篇教程教你使用Mingw-w64中的GCC C++編譯器(g++)和GDB調試器建立在windows上運行的程序。c++

配置完vscode,你將編譯並調試一個簡單的程序來熟悉vscode的界面。讀完這篇教程你將可以本身建立並配置你的工做區、在vsocde的文檔中進一步探索它的衆多特性。不過本教程不會教你有關GCC、Mingw-w64或者c++的知識,由於這些東西在網上有不少可用的優秀資料。git

若是你有任何問題,請隨時在vscode文檔倉庫提問。github

準備

要想配置成功必須先完成如下步驟:shell

  1. 安裝vscode
  2. 安裝vscode c++擴展
  3. 安裝Mingw-w64(安裝路徑文件不能帶有空格,且不要安裝在默認路徑C:/Program Files/下),本教程中默認它安裝在C:\Mingw-w64
  4. 將Mingw-w64的bin文件添加到環境變量。
    a.在windows設置中搜索編輯帳戶的環境變量
    b.選中Path,點擊編輯
    c.點擊新建,添加Mingw-w64的路徑到環境變量中。實際路徑取決於你安裝的Mingw-w64版本。例如c:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin
    d.點擊肯定。已經打開的cmd窗口要重啓才能讓新路徑生效。

建立一個工做區

  1. cmd中建立名爲projects的文件夾,用來放你的vscode工程。而後建立一個子文件夾,名爲helloworld。定位到這個文件夾,使用vscode打開。命令行以下:json

    mkdir projects
    cd projects
    mkdir helloworld
    cd helloworld
    code .

    code .命令用於在vscode中打開當前文件夾,並將這個文件夾做爲當前工做區。在編譯調試代碼以前,得先爲vscode配置Mingw-w64。繼續完成下方配置步驟後.vscode子文件夾中將存在這些文件:windows

    • c_cpp_properties.json (編譯器路徑和智能提示設置)
    • tasks.json(編譯設置)
    • launch.json(調試設置)

配置編譯器路徑

  1. Ctrl+Shift+P打開命令面板,它長這樣:command-palette.png
  2. 輸入C/C++而後在底下的列表中選擇Edit Configurations (UI)。vscode將會把你的更改寫入到.vscode下的c_cpp_properties.json中。intellisense-configurations-mingw.png
  3. 找到Complier path設置。vscode會用系統上查找到的編譯器路徑來填寫:優先查找MSVC編譯器,其次查找WSL中的g++,最後查找Mingw-w64裏的g++。若是你裝了VisualStudio或者WSL,那你就得改一下Complier path的路徑了。假設你在C:\mingw-w64下裝了版本爲8.1.0的Mingw-w64(使用Win32線程和結構化異常處理),那麼修改路徑爲C:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin\g++.exe。這個路徑隨着安裝Mingw-w64時選擇的選項的不一樣而變化。

    Complier path在配置文件中尤其重要。vscode插件經過它推斷c++標準庫的頭文件路徑,來爲你在編寫代碼時提供許多有用的信息。這叫作IntelliSense(智能提示),在稍後的例子中你將見到它。函數

  4. 設置IntelliSense modegcc-x64ui

    若是你的程序包含的頭文件不在工做區或者標準頭文件庫的路徑中,將這個頭文件的路徑添加到Inlucde path便可。
    vscode將這些設置保存在.vscode/c_cpp_properties.json。若是你直接打開它,你會看到相似以下內容(實際內容取決於你的Mingw-w64路徑):spa

    {
          "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
        }

建立編譯任務

接下來,建立一個tasks.json文件來告訴vsocde如何編譯程序。這個task調用g++編譯器根據源代碼生成可執行文件。

  1. 菜單選擇View > Command Palette,鍵入「task」,選擇Tasks: Configure Default Build Task。在下拉列表中選擇Create tasks.json file from template,而後選擇Others。vscode將生成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++的命令參數,這些參數必須按照編譯器指望的順序來聲明。
    label的值做爲任務名稱會顯示在vscode的命令面版中,任意值都可。group下的isDefault決定這個任務在按下Ctrl+Shift+B時是否做爲默認選項直接執行。這個屬性只是爲了方便一些,若是設爲false,vscode會彈出下拉框讓你選擇一個任務來執行。

配置調試設置

如今咱們配置按下F5時vscode啓動GDB所須要的配置文件。

  1. 在命令面板中鍵入「launch」並下拉選擇Debug:Open launch.json,而後選擇GDB/LLDB
  2. program是你要調試的可執行文件路徑,和你在tasks.jsonargs定義生成的可執行文件對應。調整miDebuggerPath的值爲Mingw-w64中的gdb.exe的路徑。
  3. 默認的,當stopAtEntry爲true時,C++擴展會在main函數的第一行加上斷點。設置爲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
                }
              ]
            }
          ]
        }

如今vscode配置Mingw-w64完成。配置僅對當前工做區有效,想要在另外一個工做區使用這些配置,把這些Json文件複製到另外一個工做區的.vscode子文件夾下,並修改配置中的源文件名和可執行文件名便可。

相關文章
相關標籤/搜索