在本教程中, 您將 VS Code 配置為在Windows 上使用 Microsoft Visual C++ 編譯器和調(diào)試器. 配置VS Code 之后整份, 將在VS Code 中編譯和調(diào)試一個(gè)簡單的 Hello World 程序.
先決條件
為成功完成本次配置過程待错, 您必須執(zhí)行以下操作:
安裝 VS Code.
-
安裝 C/C++ extension for VS Code. 您可以通過在"擴(kuò)展"視圖中搜索."c++"來安裝c/c++擴(kuò)展(Ctrl + Shift + X).
安裝 Microsoft Visual C++(MSVC)編譯工具鏈.
如果您使用的是Visual Studio的最新版本籽孙,請從Windows的“開始”菜單中打開"Visual Studio安裝程序",并驗(yàn)證是否選中了C ++工作負(fù)載火俄。如果尚未安裝犯建,請選中該復(fù)選框,然后在安裝程序中單擊“修改”按鈕.
您也可以僅安裝C ++ Build Tools瓜客,而無需完整安裝Visual Studio IDE.在 "Visual Studio 下載" 頁面中适瓦,向下滾動(dòng),直到在 "所有下載" 部分下看到"Visual Studio工具"谱仪,然后選擇"Build Tools for Visual Studio"的下載.
這將啟動(dòng)Visual Studio安裝程序玻熙,該程序?qū)棾鲆粋€(gè)對話框,顯示可用的Visual Studio Build Tools工作負(fù)載. 檢查C ++生成工具的工作量疯攒,然后選擇"安裝".
檢查您的Microsoft Visual C++ 安裝
要從命令行或VS Code使用MSVC嗦随,必須從Visual Studio的開發(fā)人員命令提示符運(yùn)行. 普通的Shell(例如PowerShell,Bash或Windows命令提示符)沒有設(shè)置必要的路徑環(huán)境變量.
啟動(dòng) Visual Studio 開發(fā)人員命令提示符, 從開始菜單下的快速搜索區(qū)域敬尺, 搜索 “vs 2017” 或 "開發(fā)人員" 就可以找到開發(fā)人員命令提示符.
您可以通過鍵入“ cl”來測試您是否正確安裝了C ++編譯器cl.exe枚尼,并且應(yīng)該看到版權(quán)消息以及其版本和基本用法說明.
"code”命令在當(dāng)前工作文件夾中打開VS Code,這將成為您的“工作區(qū)”砂吞。在閱讀本教程的過程中署恍,您將看到在工作區(qū)的.vscode文件夾中創(chuàng)建的三個(gè)文件.
- Task.json (構(gòu)建說明)
- Launch.json (調(diào)試器設(shè)置)
- C_cpp_properties.json ( 編譯器路徑和IntelliSense設(shè)置)
添加源代碼文件
在文件資源管理器標(biāo)題欄中,選擇"新建文件"按鈕蜻直,并將文件命名為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;
}
}
現(xiàn)在按 Ctrl + S 保存文件. 請注意盯质,剛添加的文件如何顯示在VS Code側(cè)欄中的文件資源管理器視圖(Ctrl + Shift + E)中.
在左邊的工具欄中, 還有其他的一些功能概而, 如搜索呼巷、源碼控制, 和調(diào)試. 在后面的章節(jié)中您就可以看到調(diào)試視圖. 您可以在VS Code 用戶界面文檔 中找到有關(guān)其他視圖的更多信息.
探索智能感知
在新的helloworld.cpp文件中赎瑰,將鼠標(biāo)懸停在矢量或字符串上以查看類型信息朵逝。在聲明msg變量之后,開始鍵入msg. 就像調(diào)用成員函數(shù)時(shí)一樣. 您應(yīng)該立即看到一個(gè)顯示所有成員函數(shù)的完成列表乡范,以及一個(gè)顯示msg對象的類型信息的窗口.
您可以按Tab鍵插入選定的成員. 然后,當(dāng)您添加左括號時(shí)啤咽,您將看到有關(guān)該函數(shù)所需的任何參數(shù)的信息.
編譯helloworld.cpp
接下來晋辆,您將創(chuàng)建一個(gè)task.json文件,以告訴VS Code如何構(gòu)建(編譯)程序.該任務(wù)將調(diào)用Microsoft C ++編譯器以基于源代碼創(chuàng)建可執(zhí)行文件.
從主菜單中宇整,選擇“終端配置默認(rèn)生成任務(wù)”. 在下拉列表中瓶佳,將顯示任務(wù)下拉列表,其中列出了C ++編譯器的各種預(yù)定義構(gòu)建任務(wù).選擇cl.exe構(gòu)建活動(dòng)文件鳞青,它將構(gòu)建當(dāng)前在編輯器中顯示(活動(dòng))的文件.
這將在.vscode文件夾中創(chuàng)建一個(gè)task.json文件霸饲,并在編輯器中將其打開.
您的新task.json文件應(yīng)類似于以下JSON
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
command 設(shè)置指定要運(yùn)行的程序, 在這種情況下为朋,它就是"cl.exe". Args數(shù)組指定將傳遞給cl.exe的命令行參數(shù). 必須按照編譯器期望的順序指定這些參數(shù). 該任務(wù)告訴C ++編譯器獲取活動(dòng)文件($ {file}),對其進(jìn)行編譯厚脉,然后在當(dāng)前目錄($ {fileDirname})中創(chuàng)建一個(gè)與活動(dòng)文件同名的可執(zhí)行文件(/ Fe:switch). 但帶有.exe擴(kuò)展名($ {fileBasenameNoExtension} .exe)习寸,對于我們的示例將生成helloworld.exe.
標(biāo)簽值就是您將在任務(wù)列表中看到的值;您可以隨意命名.
組對象中的“ isDefault”:true值指定當(dāng)您按Ctrl + Shift + B時(shí)將運(yùn)行此任務(wù)傻工。此屬性僅出于方便起見霞溪;如果將其設(shè)置為false,您仍然可以使用“任務(wù):運(yùn)行構(gòu)建任務(wù)”從“終端”菜單中運(yùn)行它.
運(yùn)行構(gòu)建
- 返回helloworld.cpp, 準(zhǔn)備構(gòu)建 helloworld.cpp.
- 按 Ctrl + Shift + B 或從終端主菜單中選擇 "任務(wù):運(yùn)行構(gòu)建任務(wù)".
- 任務(wù)啟動(dòng)時(shí)中捆, 可以看到 "集成終端" 面板出現(xiàn)在源代碼編輯器下方. 任務(wù)完成后, 終端將顯示編譯器的輸出, 指示構(gòu)建成狗還是失敗. 對于成功的 C++ 構(gòu)建, 輸出看起來像這樣.
- 使用+按鈕創(chuàng)建一個(gè)新終端鸯匹,您將擁有一個(gè)新終端(運(yùn)行PowerShell),其中helloworld文件夾為工作目錄. 運(yùn)行l(wèi)s泄伪,現(xiàn)在您應(yīng)該看到可執(zhí)行文件helloworld.exe以及各種中間C ++輸出和調(diào)試文件(helloworld.obj殴蓬,helloworld.pdb).
- 您可以通過輸入 .\helloworld.exe 在終端中運(yùn)行helloworld.
修改task.json
您可以使用"$ {workspaceFolder} \ *.cpp"之類的參數(shù)而不是$ {file}來修改task.json以構(gòu)建多個(gè)C ++文件。這將在當(dāng)前文件夾中生成所有.cpp文件蟋滴。您也可以通過將"$ {fileDirname} \ $ {fileBasenameNoExtension} .exe"替換為硬編碼的文件名(例如" $ {workspaceFolder}\myProgram.exe")來修改輸出文件名.
調(diào)試helloworld.cpp
接下來染厅,您將創(chuàng)建一個(gè)launch.json文件,以配置VS Code以在您按F5調(diào)試程序時(shí)啟動(dòng)Microsoft C ++調(diào)試器.從主菜單中脓杉,選擇"調(diào)試添加配置..."糟秘,然后選擇" C ++(Windows)".
VS Code創(chuàng)建一個(gè)launch.json文件,在編輯器中將其打開球散,然后生成并運(yùn)行 "helloworld" .
{
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe build and debug active file",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"preLaunchTask": "cl.exe build active file"
}
]
}
程序設(shè)置指定要調(diào)試的程序. 在這里尿赚,它被設(shè)置為活動(dòng)文件文件夾$ {fileDirname}和活動(dòng)文件名,擴(kuò)展名為.exe $ {fileBasenameNoExtension} .exe蕉堰,如果helloworld.cpp是活動(dòng)文件凌净,則文件名為helloworld.exe.
默認(rèn)情況下,C ++擴(kuò)展不會在源代碼中添加任何斷點(diǎn)屋讶,并且stopAtEntry值設(shè)置為false冰寻。將stopAtEntry值更改為true,以使調(diào)試器在啟動(dòng)調(diào)試時(shí)在main方法上停止.
開始調(diào)試會話
- 返回 helloworld.cpp, 使其成為活動(dòng)文件.
- 按F5或從主菜單中選擇"調(diào)試開始調(diào)試".在開始瀏覽源代碼之前皿渗,讓我們花一點(diǎn)時(shí)間注意用戶界面中的一些更改.
集成終端出現(xiàn)在源代碼編輯器的底部.在"調(diào)試輸出"選項(xiàng)卡中斩芭,您將看到指示調(diào)試器已啟動(dòng)并正在運(yùn)行的輸出.
-
編輯器突出顯示main方法中的第一條語句. 這是C ++擴(kuò)展自動(dòng)為您設(shè)置的斷點(diǎn).
左側(cè)的 "調(diào)試" 視圖顯示調(diào)試信息.您將在本教程的后面看到一個(gè)示例.
在代碼編輯器的頂部, 將顯示一個(gè)調(diào)試控制面板. 可以按住窗口邊緣并移動(dòng)倒合適的地方.
逐步執(zhí)行代碼
現(xiàn)在,您準(zhǔn)備開始逐步執(zhí)行代碼.
單擊或按調(diào)試控制面板中的“跳過”圖標(biāo)乐疆,直到突出顯示for(const string&word:msg)語句.
從左至右按鈕功能分別為 Continue 划乖、Step Over 、Step Into挤土、Step Out 琴庵、Restart 、Stop 調(diào)試功能.
這幾個(gè)功能的作用是 繼續(xù)執(zhí)行、跳出當(dāng)前塊迷殿、進(jìn)入當(dāng)前塊儿礼、重啟調(diào)試器、停止調(diào)試器.
觀察變量
有時(shí)庆寺,您可能希望在程序執(zhí)行時(shí)跟蹤變量的值. 您可以通過在變量上設(shè)置監(jiān)視來做到這一點(diǎn).
- 在觀察窗口中蚊夫, 通過按 "+" 按鈕,輸入待觀察的變量名止邮, 當(dāng)代碼運(yùn)行到變量名所在的塊時(shí)这橙, 可以觀察該值.
- 當(dāng)斷點(diǎn)停留在某個(gè)塊時(shí), 可以在鼠標(biāo)移動(dòng)倒特定的變量上, 可以快速的觀察該變量的值.
C/C++ 配置
如果您想進(jìn)一步控制C / C ++擴(kuò)展,可以創(chuàng)建一個(gè)c_cpp_properties.json文件导披,該文件可讓您更改設(shè)置屈扎,例如編譯器的路徑,包含路徑撩匕,C ++標(biāo)準(zhǔn)(默認(rèn)為C ++ 17).
您可以通過運(yùn)行命令C / C ++:從命令面板(Ctrl + Shift + P)編輯配置(UI)來查看C / C ++配置UI.
這將打開“ C / C ++配置”頁面. 當(dāng)您在此處進(jìn)行更改時(shí)鹰晨,VS Code會將其寫入.vscode文件夾中名為c_cpp_properties.json的文件中.
Visual Studio Code將這些設(shè)置放在.vscode\c_cpp_properties.json中. 如果直接打開該文件,則它應(yīng)如下所示.
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
僅當(dāng)程序包含不在工作空間或標(biāo)準(zhǔn)庫路徑中的頭文件時(shí)止毕,才需要添加到"包含路徑數(shù)組"設(shè)置中.
重用C++配置
VS Code現(xiàn)在已配置為使用Microsoft C ++編譯器. 該配置適用于當(dāng)前工作空間模蜡。要重用配置,只需將JSON文件復(fù)制到新項(xiàng)目文件夾(工作區(qū))中的.vscode文件夾扁凛,然后根據(jù)需要更改源文件和可執(zhí)行文件的名稱.