首頁 > 軟體

Vscode設定C/C++環境使用minGW(保姆級設定過程)

2022-02-23 13:07:51

本人設定過程

準備工作:

獲取最新版的mingw 或 本地下載地址,根據系統選擇合適的版本(這裡以win11(與win10無差別)為例)。

等待下載。

下載完成後進入安裝介面,由於本人電腦為64位元(i686為32位元),設定如下即可。

下圖中1路徑選擇(記住,下一部需要設定環境變數),2隨意勾選。

設定minGW環境變數

開始中搜尋如下關鍵字,進入環境變數設定。

下圖2即為mingw中bin的安裝路徑

該路徑下的部分檔案如圖所示。

設定好後點選應用即可。

檢查minGW是否安裝成功

在命令列中分別輸入g++ --version gdb --version,出現以下內容則設定成功(若沒有如下內容,則檢查環境設定過程各個步驟)。

建立你的第一個helloworld

在 Windows 命令提示字元下,建立一個名為的空資料夾projects,您可以在其中放置所有 VS Code 專案。然後建立一個名為 的子資料夾helloworld,導航到其中,然後通過輸入以下命令在該資料夾中開啟 VS Code:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

“code .” 命令在當前工作資料夾中開啟 VsCode。

建立helloworld.cpp檔案。

將以下程式碼複製到helloworld.cpp中。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}

構建helloworld.cpp

接下來,您將建立一個tasks.json檔案來告訴 VS Code 如何構建(編譯)程式。此任務將呼叫 g++ 編譯器以基於原始碼建立可執行檔案。

從主選單中,選擇“終端(terminal)” >“設定預設構建任務(Configure Default Build Task)”。在下拉選單中,將顯示一個任務下拉選單,其中列出了 C++ 編譯器的各種預定義構建任務。選擇"g++.exe build active file",這將構建當前在編輯器中顯示(活動)的檔案。

這將tasks.json在.vscode資料夾中建立一個檔案並在編輯器中開啟它。

您的新tasks.json檔案應該類似於下面的 JSON:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe build active file",
			"command": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "compiler: "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe""
		}
	]
}

不懂引數含義的預設即可。

command設定指定要執行的程式;在這種情況下是 g++。該args陣列指定將傳遞給 g++ 的命令列引數。這些引數必須按照編譯器預期的順序指定。這個任務告訴 g++ 獲取活動檔案 ( ${file}),編譯它,並在當前目錄 ( ${fileDirname}) 中建立一個與活動檔案同名但帶有.exe擴充套件名 ( ${fileBasenameNoExtension}.exe)的可執行檔案,helloworld.exe為我們的範例。

注意:您可以tasks.json在變數參考中瞭解有關變數的更多資訊。

label值是您將在任務列表中看到的值;你可以隨意命名它。

物件中的"isDefault": truegroup指定當您按Ctrl+Shift+B時將執行此任務。此屬性僅為方便起見;如果您將其設定為 false,您仍然可以使用Tasks: Run Build Task從終端選單執行它。

執行構建

回到helloworld.cpp. 您的任務會構建活動檔案,而您想要構建helloworld.cpp.

要執行中定義的構建任務tasks.json,請按Ctrl+Shift+B或從終端主選單中選擇Run Build Task。

任務開始時,您應該會看到整合終端面板出現在原始碼編輯器下方。任務完成後,終端會顯示編譯器的輸出,指示構建是成功還是失敗。對於成功的 g++ 構建,輸出如下所示:

顯示成功後,並生成一個exe檔案。
如果顯示不成功(可能是許可權不夠),需關閉軟體重新用管理員模式開啟vscode,並重新執行上述操作。

最後在helloworld目錄下通過鍵入./helloworld(或者./helloworld.exe如果您使用 PowerShell 終端)在終端中執行,結果如下所示。

到這裡就已經基本快成功了,最後還剩下偵錯功能。

偵錯 helloworld.cpp

接下來,您將建立一個launch.json檔案來設定 VS Code,以便在您按F5偵錯程式時啟動 GDB 偵錯程式。

從主選單中,選擇Run > Add Configuration…,然後選擇C++ (GDB/LLDB)

然後,您將看到各種預定義偵錯設定的下拉選單。選擇g++.exe build and debug active file
成功後顯示如下:

並生成launch.json檔案,在編輯器中開啟它,然後構建並執行“helloworld”。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": "g++.exe - build active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\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設定指定要偵錯的程式。這被設定為活動資料夾${fileDirname}和檔名活躍與.exe擴充套件${fileBasenameNoExtension}.exe,這是否helloworld.cpp是活動的檔案會helloworld.exe

預設情況下,C++ 擴充套件不會向您的原始碼新增任何斷點,並且該stopAtEntry值設定為false.

stopAtEntry值更改true為使偵錯程式main在您開始偵錯時停止該方法。

注意:該preLaunchTask設定用於指定啟動前要執行的任務。確保它與tasks.json檔案label設定一致。

到此這篇關於Vscode設定C/C++環境使用minGW(保姆級設定過程)的文章就介紹到這了,更多相關Vscode設定minGW內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com