來源:https://code.visualstudio.com/docs/cpp/config-msvc
100% google翻譯
在本教程中走净,您將Visual Studio Code配置為在Windows上使用Microsoft C ++編譯器和調(diào)試器。配置VS Code之后孤里,您將編譯并調(diào)試一個(gè)簡(jiǎn)單的程序以熟悉VS Code用戶界面伏伯。完成本教程后,您將準(zhǔn)備創(chuàng)建和配置自己的工作區(qū)捌袜,并瀏覽VS Code文檔以獲取有關(guān)其許多功能的更多信息说搅。本教程不會(huì)教您有關(guān)Windows或Microsoft C ++工具集或C ++語言的詳細(xì)信息。對(duì)于這些主題虏等,Web上有許多不錯(cuò)的資源弄唧。
如果您有任何問題,請(qǐng)隨時(shí)在VS Code文檔庫中提交本教程的問題霍衫。
先決條件
要成功完成本教程套才,您必須執(zhí)行以下操作:
為VS Code安裝C ++擴(kuò)展慕淡。
-
安裝Microsoft C ++(MSVC)編譯器工具集背伴。
- 如果您使用的是Visual Studio的最新版本,請(qǐng)從Windows的“開始”菜單中打開“ Visual Studio安裝程序”,并驗(yàn)證是否選中了C ++工作負(fù)載傻寂。如果尚未安裝息尺,請(qǐng)選中該框,然后在安裝程序中單擊“ 修改”按鈕疾掰。
- 或者搂誉,通過單擊“ 下載”頁面上的“ Visual Studio構(gòu)建工具”鏈接來下載獨(dú)立工具集,然后按照提示進(jìn)行操作静檬。使用默認(rèn)設(shè)置炭懊,下載大小約為1GB,磁盤大小約為4GB拂檩。如果您不需要CMake支持(及其依賴的Windows SDK)侮腹,則磁盤上的大小應(yīng)約為3GB。
從開發(fā)人員命令提示符啟動(dòng)VS代碼
要在VS Code中使用MSVC稻励,必須從Visual Studio的開發(fā)人員命令提示符啟動(dòng)VS Code 父阻。普通的Windows命令提示符或Bash提示符沒有設(shè)置必要的環(huán)境變量。
- 要打開VS的Developer Command Prompt望抽,請(qǐng)開始在Windows“開始”菜單中鍵入“ Developer”加矛,您應(yīng)該看到它出現(xiàn)在建議列表中。確切名稱取決于您安裝的Visual Studio或Visual Studio Build Tools版本煤篙。單擊該項(xiàng)目以打開提示斟览。
- 在開發(fā)人員命令提示符下,創(chuàng)建一個(gè)名為“ projects”的空文件夾辑奈,您可以在其中存儲(chǔ)所有VS Code項(xiàng)目趣惠,然后創(chuàng)建一個(gè)名為“ helloworld”的子文件夾,導(dǎo)航至
code
該文件夾身害,并.
通過輸入以下內(nèi)容在該文件夾()中打開VS Code()。以下命令:
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
該代碼草戈。命令在當(dāng)前工作文件夾(即您的工作空間)中打開VS Code 塌鸯。在獲得IntelliSense支持或編譯和調(diào)試代碼之前,我們必須為MSVC配置VS Code唐片。完成配置后丙猬,我們將在.vscode
子文件夾中包含三個(gè)文件:
-
c_cpp_properties.json
(編譯器路徑和IntelliSense設(shè)置) -
tasks.json
(制作說明) -
launch.json
(調(diào)試器設(shè)置)
配置編譯器路徑
- 按Ctrl + Shift + P打開命令面板》丫拢看起來像這樣:
- 開始鍵入“ C / C ++”茧球,然后從建議列表中選擇“ 編輯配置”(UI)。這將打開“ C / C ++配置”頁面星持。當(dāng)您在此處進(jìn)行更改時(shí)抢埋,VS Code會(huì)將其寫入到
c_cpp_properties.json
.vscode文件夾中的文件中。
-
找到編譯器路徑設(shè)置。VS Code會(huì)根據(jù)在系統(tǒng)上找到的內(nèi)容嘗試使用默認(rèn)編譯器填充它揪垄。它首先查找MSVC編譯器穷吮,然后在Windows Subsystem for Linux(WSL)上查找g ++,然后在Mingw-w64上查找g ++饥努。對(duì)于MSVC捡鱼,路徑應(yīng)類似于以下內(nèi)容,具體取決于您安裝的特定版本:“ C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe”酷愧。
該編譯器的路徑設(shè)置是配置中的最重要的設(shè)置驾诈。該擴(kuò)展使用它來推斷C ++標(biāo)準(zhǔn)庫頭文件的路徑。當(dāng)擴(kuò)展知道在哪里可以找到那些文件時(shí)溶浴,它可以在您編寫代碼時(shí)為您提供許多有用的信息乍迄。此信息稱為IntelliSense,您將在本教程的后面看到一些示例戳葵。
將IntelliSense模式設(shè)置為
${default}
就乓,在Windows上為msvc-x64
。
僅當(dāng)程序包含不在工作空間或標(biāo)準(zhǔn)庫路徑中的頭文件時(shí)拱烁,才需要修改“ 包含路徑”設(shè)置生蚁。
Visual Studio代碼將這些設(shè)置放在中.vscode/c_cpp_properties.json
。如果直接打開該文件戏自,則其外觀應(yīng)如下所示(取決于您的特定路徑):
{
"configurations": [
{
"name": "Win32",
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe",
"windowsSdkVersion": "10.0.17763.0",
"intelliSenseMode": "msvc-x64",
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}
創(chuàng)建一個(gè)構(gòu)建任務(wù)
接下來邦投,創(chuàng)建一個(gè)tasks.json
文件來告訴VS Code如何構(gòu)建(編譯)程序。該任務(wù)將調(diào)用Microsoft C ++編譯器(cl.exe)以基于源代碼創(chuàng)建可執(zhí)行文件擅笔。
從主菜單中志衣,選擇“ 視圖”>“命令面板”,然后鍵入“任務(wù)”猛们,然后選擇“ 任務(wù):配置默認(rèn)構(gòu)建任務(wù)”念脯。在下拉列表中,選擇“ 從模板創(chuàng)建Task.json文件”弯淘,然后選擇“ 其他”绿店。VS Code創(chuàng)建一個(gè)最小
tasks.json
文件,并在編輯器中將其打開庐橙。繼續(xù)假勿,并使用以下代碼片段替換整個(gè)文件內(nèi)容:
{
"version": "2.0.0",
"tasks": [
{
"label": "msvc build",
"type": "shell",
"command": "cl.exe",
"args": ["/EHsc", "/Zi", "/Fe:", "helloworld.exe", "helloworld.cpp"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always"
},
"problemMatcher": "$msCompile"
}
]
}
該label
值將在VS Code命令面板中使用,并且可以是您喜歡的任何名稱态鳖。該command
值表示我們正在使用cl.exe
MSVC編譯器转培。該args
數(shù)組指定將傳遞給上一步中指定的編譯器的命令行參數(shù)。它們必須以編譯器期望的順序出現(xiàn)浆竭。在此示例中浸须,我們指定異常處理模式(EHsc)惨寿,并告訴編譯器生成帶符號(hào)的調(diào)試版本(Zi)。該/Fe:
參數(shù)告訴編譯器將可執(zhí)行文件命名為“ helloworld.exe”羽戒。
該group
值指定當(dāng)您按Ctrl + Shift + B時(shí)將運(yùn)行此任務(wù)缤沦。
配置調(diào)試設(shè)置
接下來,您將創(chuàng)建一個(gè)launch.json
文件易稠,以配置VS Code以在按F5調(diào)試程序時(shí)啟動(dòng)調(diào)試器缸废。
- 從主菜單中,選擇“ 調(diào)試”>“添加配置...”驶社,然后選擇“ C / C ++ Windows(啟動(dòng))”企量。這將導(dǎo)致
launch.json
文件被創(chuàng)建和打開。用這個(gè)替換文件的內(nèi)容
{
"version": "0.2.0",
"configurations": [
{
"name": "(msvc) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/helloworld.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
}
]
}
請(qǐng)注意亡电,程序名稱helloworld.exe
與我們?cè)谥兄付ǖ拿Q匹配tasks.json
届巩。
默認(rèn)情況下,C ++擴(kuò)展名在的第一行添加了一個(gè)斷點(diǎn)main
份乒。該stopAtEntry
值設(shè)置為true
使調(diào)試器在該斷點(diǎn)處停止恕汇。false
如果您希望忽略它,可以將其設(shè)置為或辖。
VS Code現(xiàn)在已配置為使用Microsoft C ++編譯器瘾英。該配置適用于當(dāng)前工作空間。要重用配置颂暇,只需將三個(gè)JSON文件復(fù)制到新工作區(qū)中的.vscode文件夾缺谴,然后根據(jù)需要更改源文件和可執(zhí)行文件的名稱。
其余步驟作為可選練習(xí)提供耳鸯,以幫助您熟悉編輯和調(diào)試經(jīng)驗(yàn)湿蛔。
添加源代碼文件
在文件資源管理器中選擇“ HELLOWORLD”文件夾。右鍵單擊窗格县爬,然后從上下文菜單中選擇“ 新建文件 ”阳啥。命名文件
helloworld.cpp
。確保文件不在.vscode
子文件夾中财喳。-
粘貼此源代碼:
#include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<string> msg {"Hello", "C++", "World", "from", "VS Code!"}; for (const string& word : msg) { cout << word << " "; } cout << endl; }
現(xiàn)在按Ctrl + S保存文件〔斐伲現(xiàn)在注意,我們剛剛編輯的所有文件如何顯示在VS Code左側(cè)面板的File Explorer視圖中:
該面板還用于源代碼控制纲缓,調(diào)試,搜索和替換文本以及管理擴(kuò)展喊废。左側(cè)的按鈕控制這些視圖祝高。我們將在本教程的后面部分中查看 “ 調(diào)試視圖”。您可以在VS Code文檔中找到有關(guān)其他視圖的更多信息污筷。
探索智能感知
在新helloworld.cpp
文件中工闺,將鼠標(biāo)懸停在vector
或上string
以查看類型信息乍赫。聲明msg
變量后,開始msg.
像調(diào)用成員函數(shù)時(shí)一樣鍵入內(nèi)容陆蟆。您應(yīng)該立即看到一個(gè)顯示所有成員函數(shù)的完成列表雷厂,以及一個(gè)顯示該msg
對(duì)象的類型信息的窗口:
您可以按TAB鍵插入選定的成員。然后叠殷,當(dāng)您添加左括號(hào)時(shí)改鲫,您將看到有關(guān)該函數(shù)所需的任何參數(shù)的信息。
編譯程序
-
要運(yùn)行您在中定義的構(gòu)建任務(wù)林束,請(qǐng)
tasks.json
按Ctrl + Shift + B或從主菜單中選擇“ 視圖”>“命令面板”像棘,然后開始鍵入“任務(wù):運(yùn)行構(gòu)建任務(wù)”。該選項(xiàng)將在您完成鍵入之前出現(xiàn)壶冒。注意:如果看到如下錯(cuò)誤消息:cl.exe:未找到命令缕题,則表明您尚未從VS的開發(fā)人員命令提示符啟動(dòng)VS代碼。有關(guān)更多信息胖腾,請(qǐng)參見本教程的第一部分烟零。
任務(wù)開始時(shí),您應(yīng)該看到集成的Terminal窗口出現(xiàn)在代碼編輯器下方咸作。任務(wù)完成后锨阿,終端將顯示編譯器的輸出,指示構(gòu)建成功還是失敗性宏。對(duì)于成功的MSVC構(gòu)建群井,輸出如下所示:
- 按照消息指示,按任意鍵以關(guān)閉構(gòu)建消息毫胜。終端現(xiàn)在返回到shell命令提示符褐耳。
開始調(diào)試會(huì)話
- 您現(xiàn)在可以運(yùn)行該程序了。按F5或從主菜單中選擇“ 調(diào)試”>“開始調(diào)試”雨饺。在開始逐步執(zhí)??行代碼之前对省,讓我們花一點(diǎn)時(shí)間注意用戶界面中的一些更改:
- 代碼編輯器突出顯示該
main
方法的第一行。這是C ++擴(kuò)展自動(dòng)為您設(shè)置的斷點(diǎn):
- 現(xiàn)在口渔,左側(cè)的工作區(qū)窗格顯示了調(diào)試信息样屠,但由于沒有任何程序語句(除了一些系統(tǒng)啟動(dòng)代碼)已被執(zhí)行,因此沒有任何有用的信息缺脉,這反映在“線程”窗口中:
- 在代碼編輯器的頂部痪欲,將顯示一個(gè)調(diào)試控制面板。您可以通過抓住左側(cè)的點(diǎn)在屏幕上移動(dòng)它攻礼。
單步執(zhí)行代碼
現(xiàn)在业踢,我們準(zhǔn)備開始逐步執(zhí)??行代碼。
- 單擊或按調(diào)試控制面板中的“ 跳過”圖標(biāo)礁扮,直到
for (const string& word : msg)
突出顯示該語句知举。
該**步驟在**命令跳過所有內(nèi)的內(nèi)部功能調(diào)用`vector`和`string`所述時(shí)調(diào)用類`msg`創(chuàng)建并初始化變量瞬沦。注意左側(cè)“ **變量”**窗口中的更改。在這種情況下雇锡,可能會(huì)出現(xiàn)錯(cuò)誤逛钻,因?yàn)楸M管調(diào)試器現(xiàn)在可以看到循環(huán)的變量名,但該語句尚未執(zhí)行锰提,因此此時(shí)無任何內(nèi)容可讀取曙痘。的內(nèi)容`msg`是可見的,但是欲账,因?yàn)樵撀暶饕淹瓿伞?
再次按Step over前進(jìn)到該程序中的下一條語句(跳過為初始化循環(huán)而執(zhí)行的所有內(nèi)部代碼)÷沤現(xiàn)在,“ 變量”窗口顯示有關(guān)循環(huán)變量的信息赛不。
再次按Step over執(zhí)行
cout
語句惩嘉。注意自擴(kuò)展程序的2019年3月版起,直到循環(huán)完成踢故,才會(huì)顯示任何輸出文黎。如果愿意,可以繼續(xù)按Step over殿较,直到將引導(dǎo)程序中的所有單詞都打印到控制臺(tái)為止耸峭。但是,如果您感到好奇淋纲,請(qǐng)嘗試按Step Into按鈕以逐步瀏覽C ++標(biāo)準(zhǔn)庫中的源代碼劳闹!
要返回自己的代碼,一種方法是按住“ 跳過”洽瞬。另一種方法是通過helloworld.cpp
在代碼編輯器中切換到選項(xiàng)卡本涕,將插入點(diǎn)放在cout
循環(huán)內(nèi)的語句中的某個(gè)位置,然后按F9來在代碼中設(shè)置斷點(diǎn)伙窃。在左側(cè)的裝訂線中出現(xiàn)一個(gè)紅點(diǎn)菩颖,指示已在此行上設(shè)置斷點(diǎn)。
然后按F5鍵從標(biāo)準(zhǔn)庫標(biāo)題中的當(dāng)前行開始執(zhí)行为障。執(zhí)行將中斷cout
晦闰。如果愿意,可以再次按F9鍵以關(guān)閉斷點(diǎn)鳍怨。
設(shè)置WATCH
有時(shí)呻右,您可能希望在程序執(zhí)行時(shí)跟蹤變量的值。您可以通過在變量上設(shè)置WATCH來做到這一點(diǎn)鞋喇。
- 將插入點(diǎn)放在循環(huán)內(nèi)声滥。在 “WATCH” 窗口中,單擊加號(hào)确徙,然后在文本框中鍵入
word
醒串,這是循環(huán)變量的名稱。現(xiàn)在鄙皇,當(dāng)您逐步執(zhí)行循環(huán)時(shí)芜赌,請(qǐng)查看“監(jiān)視”窗口。
通過在循環(huán)之前添加此語句來添加另一只手表
int i = 0;
伴逸。然后缠沈,在循環(huán)中,加上這樣一句話:++i;
〈砗現(xiàn)在洲愤,i
像上一步一樣添加手表。要在斷點(diǎn)處暫停執(zhí)行時(shí)快速查看任何變量的值顷锰,可以使用鼠標(biāo)指針懸停在其上柬赐。
下一步#
- 瀏覽《VS Code用戶指南》。
- 查看C ++擴(kuò)展概述官紫。
- 創(chuàng)建一個(gè)新的工作區(qū)肛宋,將您的.json文件復(fù)制到其中,為新的工作區(qū)路徑束世,程序名稱等調(diào)整必要的設(shè)置酝陈,然后開始編碼!