該文章翻譯自官方教程(有部分修改)php
這篇教程教你使用Mingw-w64中的GCC C++編譯器(g++)和GDB調試器建立在windows上運行的程序。c++
配置完vscode,你將編譯並調試一個簡單的程序來熟悉vscode的界面。讀完這篇教程你將可以本身建立並配置你的工做區、在vsocde的文檔中進一步探索它的衆多特性。不過本教程不會教你有關GCC、Mingw-w64或者c++的知識,由於這些東西在網上有不少可用的優秀資料。git
若是你有任何問題,請隨時在vscode文檔倉庫提問。github
要想配置成功必須先完成如下步驟:shell
C:/Program Files/
下),本教程中默認它安裝在C:\Mingw-w64
bin
文件添加到環境變量。編輯帳戶的環境變量
Path
,點擊編輯
新建
,添加Mingw-w64的路徑到環境變量中。實際路徑取決於你安裝的Mingw-w64版本。例如c:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin
肯定
。已經打開的cmd窗口要重啓才能讓新路徑生效。在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
(調試設置)Ctrl+Shift+P
打開命令面板,它長這樣: C/C++
而後在底下的列表中選擇Edit Configurations (UI)
。vscode將會把你的更改寫入到.vscode
下的c_cpp_properties.json
中。 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(智能提示)
,在稍後的例子中你將見到它。函數
設置IntelliSense mode
爲gcc-x64
。ui
若是你的程序包含的頭文件不在工做區或者標準頭文件庫的路徑中,將這個頭文件的路徑添加到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++編譯器根據源代碼生成可執行文件。
tasks.json
並在編輯區打開。使用如下片斷替換整個文件的內容:
{ "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所須要的配置文件。
program
是你要調試的可執行文件路徑,和你在tasks.json
中args
定義生成的可執行文件對應。調整miDebuggerPath
的值爲Mingw-w64中的gdb.exe的路徑。stopAtEntry
爲true時,C++擴展會在main函數的第一行加上斷點。設置爲false則忽略這個斷點。設置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
子文件夾下,並修改配置中的源文件名和可執行文件名便可。