VScode-配置C/C++
環(huán)境
準(zhǔn)備工作
下載并安裝相應(yīng)軟件
- 下載 VScode 最新版,第一次使用 VS Code 時(shí)你應(yīng)該知道的一切配置光戈,按照這篇文章安裝相應(yīng)插件
- 下載并安裝 MingW-64,驗(yàn)證是否安裝好 MingW,驗(yàn)證方式:
命令行 cmd暇仲,輸入g++ -v
,``gcc -v副渴,gdb -v
若輸出一大段信息奈附,則說(shuō)明安裝成功(此處不詳述,自行百度)
添加 MingW 環(huán)境變量
- 環(huán)境變量
- windows 環(huán)境下煮剧,右鍵點(diǎn)擊此電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置 -> 高級(jí) -> 環(huán)境變量打開如下圖所示窗口
- 點(diǎn)擊新建添加一個(gè)環(huán)境變量斥滤,點(diǎn)擊編輯修改一個(gè)環(huán)境變量,變量名和變量值設(shè)置時(shí)勉盅,不要含有空格佑颇,也不要使用中文,多個(gè)路徑之間使用; 分隔草娜。通常情況下用戶變量一經(jīng)修改后會(huì)立即生效挑胸,而系統(tǒng)變量需要重啟電腦后才能生效,對(duì)于正在運(yùn)行的程序需要關(guān)閉后再重新運(yùn)行宰闰,新設(shè)置才能生效
- 添加 MingW 環(huán)境變量
將
Mingw
所在的bin
文件夾添加到環(huán)境變量的path
中去茬贵,比如我將 Mingw 下載到了 E 盤,添加環(huán)境變量示例如下:
工作空間設(shè)置移袍,只針對(duì)當(dāng)前項(xiàng)目有效解藻。比如說(shuō)我們可以在這里面要求當(dāng)前項(xiàng)目的代碼統(tǒng)一使用制表符,而不需要要求每一個(gè)團(tuán)隊(duì)成員去修改各自的配置文件葡盗。
- 驗(yàn)證
MinGW 安裝并導(dǎo)入文件后螟左,其中包含了 C 與 C++這兩個(gè)編譯環(huán)境,操作:win + R
,輸入cmd
進(jìn)入命令行模式觅够,輸入gcc --h
和g++ --h
,(h 前面有兩個(gè) -
)具體操作如下:如未出現(xiàn)路狮,可以嘗試重啟電腦;
vscode 全局變量
- {workspaceRoot} VS Code 當(dāng)前打開的文件夾
- ${file} 當(dāng)前打開的文件
- ${relativeFile} 相對(duì)于 workspaceRoot 的相對(duì)路徑
- ${fileBasename} 當(dāng)前打開文件的文件名
- ${fileDirname} 所在的文件夾蔚约,是絕對(duì)路徑
- ${fileExtname} 當(dāng)前打開文件的拓展名奄妨,如.json
- ${cwd} the task runner's current working directory on startup
.vscode
文件夾的作用
在項(xiàng)目的根目錄下新建一個(gè)
vscode
文件夾,說(shuō)明這個(gè)文件夾代表的是當(dāng)前項(xiàng)目的配置工作空間設(shè)置苹祟,只針對(duì)當(dāng)前項(xiàng)目有效砸抛。比如說(shuō)我們可以在這里面要求當(dāng)前項(xiàng)目的代碼統(tǒng)一使用制表符评雌,而不需要要求每一個(gè)團(tuán)隊(duì)成員去修改各自的配置文件。
lunch.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", // 配置名稱直焙,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
"type": "cppdbg", // 配置類型景东,cppdbg對(duì)應(yīng)cpptools提供的調(diào)試功能;可以認(rèn)為此處只能是cppdbg
"request": "launch", // 請(qǐng)求配置類型奔誓,可以為launch(啟動(dòng))或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.o", // 將要進(jìn)行調(diào)試的程序的路徑
"args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù)斤吐,一般設(shè)為空即可
"stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔帲喈?dāng)于在main上打斷點(diǎn)
"cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄厨喂,此為工作區(qū)文件夾和措;改成${fileDirname}可變?yōu)槲募谀夸? "environment": [], // 環(huán)境變量
"externalConsole": false, // 為true時(shí)使用單獨(dú)的cmd窗口,與其它IDE一致蜕煌;18年10月后設(shè)為false可調(diào)用VSC內(nèi)置終端
"MIMode": "gdb", // 指定連接的調(diào)試器派阱,可以為gdb或lldb。
"setupCommands": [
// 模板自帶斜纪,好像可以更好地顯示STL容器的內(nèi)容贫母,具體作用自行Google
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
"windows": {
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"miDebuggerPath": "E:\\mingw-w64\\mingw64\\bin\\gdb.exe" // 調(diào)試器路徑,Windows下后綴不能省略盒刚,Linux下則不要
},
"osx": {
"externalConsole": true
}
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "process",
"command": "g++",
"args": [
"-g",
"-Wall",
"-std=c++14",
"-lm",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.o"
],
"presentation": {
"echo": false,
"reveal": "silent",
"showReuseMessage": false
},
"problemMatcher": "$gcc",
"group": {
"kind": "build",
"isDefault": true
},
"windows": {
"args": [
"-g",
"-Wall",
"-std=c++14",
"-lm",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
]
}
},
{
"label": "run",
"type": "shell",
"dependsOn": "build",
"command": "${fileDirname}/${fileBasenameNoExtension}.o",
"presentation": {
"focus": true
},
"group": {
"kind": "test",
"isDefault": true
},
"windows": {
"command": "${fileDirname}/${fileBasenameNoExtension}.exe"
}
}
]
}
settings.json
{
"files.exclude": {
"**/*.o": true,
"**/*.exe": true,
"**/*.class": true,
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
}
}
注意
- 如果你想要使用以上配置文件腺劣,請(qǐng)將 lsunch.json 文件中的調(diào)試器路徑改為你的相應(yīng)路徑示例如下
- "miDebuggerPath": "E:\mingw-w64\mingw64\bin\gdb.exe" // 調(diào)試器路徑,Windows 下后綴不能省略因块,Linux 下則不要
用戶設(shè)置和工作空間設(shè)置
用戶設(shè)置:這種方式進(jìn)行的設(shè)置誓酒,會(huì)適用于該用戶打開的所有工程/實(shí)例
工作空間設(shè)置:工作空間是指使用
VScode
打開的某個(gè)文件夾,在該文件夾下會(huì)創(chuàng)建一個(gè)名為贮聂。vscode
的文件夾,保存著項(xiàng)目的相應(yīng)設(shè)置寨辩。工作空間的設(shè)置會(huì)覆蓋用戶的設(shè)置吓懈。vscode 的配置文件 setting.json 的 UI 界面或者 json 形式
-
UI 界面
-
進(jìn)入設(shè)置界面,按下快捷鍵
Ctrl + ,
進(jìn)入設(shè)置靡狞,可以選擇用戶設(shè)置或者工作區(qū)設(shè)置
-
進(jìn)入設(shè)置界面,按下快捷鍵
-
json 形式界面
- 按下快捷鍵`Ctrl + Shift + P``耻警,輸入 Preferences: Open User Settings 或 Preferences: Open Workspace Settings〉榕拢可以進(jìn)入相應(yīng)設(shè)置甘穿。
每個(gè)人都有自己的偏好,在使用 VS Code 進(jìn)行開發(fā)時(shí)梢杭,都會(huì)根據(jù)自己的習(xí)慣來(lái)對(duì) VS Code 進(jìn)行用戶級(jí)別的配置温兼。但是,當(dāng)多人共同完成某個(gè)項(xiàng)目的時(shí)候武契,該項(xiàng)目會(huì)有一定的編碼規(guī)范募判,如: 編輯某個(gè)語(yǔ)言時(shí)的設(shè)置荡含,代碼的縮進(jìn)等等,這個(gè)時(shí)候就需要對(duì)該項(xiàng)目進(jìn)行單獨(dú)的工作空間級(jí)別的設(shè)置届垫。
在 UI 界面中释液,將鼠標(biāo)放到設(shè)定左邊的空白位置會(huì)顯示出一個(gè)齒輪,其中有重置設(shè)定/復(fù)制設(shè)定/復(fù)制設(shè)定到 json 三個(gè)選項(xiàng). 因此在團(tuán)隊(duì)協(xié)助中, 可以很輕松地分享項(xiàng)目的特定設(shè)置.
- 參考文章装处,除上述之外误债,還有針對(duì)特定的語(yǔ)言的編輯設(shè)定,以及安全性設(shè)定妄迁,現(xiàn)在暫時(shí)不深入研究
牛刀小試
- 快捷鍵設(shè)置→ 參考文檔
[圖片上傳失敗...(image-db8746-1584417703346)]
常見錯(cuò)誤
- 找不到.exe 文件寝蹈,大概率是以為文件名包含中文,去除文件名中的中文即可
- 其他錯(cuò)誤參考文章 → zhihu
總結(jié)
- 安裝完
MingW
并添加環(huán)境變量之后判族,我們其實(shí)是可以直接編程的躺盛,但是你必須要會(huì)要學(xué)會(huì)一些基本 shell 命令,比如你寫了一個(gè)A.cpp
文件形帮,在命令行中輸入g++ A.cpp
就會(huì)在當(dāng)前目錄下編譯生成一個(gè)A.exe
的可執(zhí)行文件槽惫,此時(shí)你點(diǎn)擊運(yùn)行 exe 文件即可運(yùn)行(一步操作:g++ -o A.cpp
也可)。如果你想要調(diào)試辩撑,命令行gdb A.exe
界斜; - 以上就是在命令行界面中簡(jiǎn)單的編譯運(yùn)行一個(gè) c++ 文件,其實(shí) VScode 本質(zhì)是一個(gè)編輯器合冀,想要利用他來(lái)編譯運(yùn)行調(diào)試 C++文件各薇,我們就必須配置幾個(gè)文件,讓他自動(dòng)幫我們輸入一些命令君躺,并實(shí)現(xiàn) UI 界面峭判;如果給編輯器配置上編譯環(huán)境,那么那就是一個(gè) IDE(集成開發(fā)環(huán)境)
- 配置完環(huán)境變量一定要測(cè)試一下是否成功棕叫,不成功可以重啟電腦再測(cè)試
- 報(bào)錯(cuò)的時(shí)候能將錯(cuò)誤的關(guān)鍵要點(diǎn)找出來(lái)林螃,否則上網(wǎng)也找不出是啥原因
- 一些關(guān)鍵詞:GCC、gcc俺泣、g++疗认、gdb、MingW伏钠、clang横漏、MSVC
Reference
版權(quán)聲明:本文為原創(chuàng)文章,版權(quán)歸本博客所有熟掂,轉(zhuǎn)載請(qǐng)注明出處缎浇!
所有原創(chuàng)文章采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國(guó)際許可協(xié)議 進(jìn)行許可
個(gè)人博客:https://www.betterman.xyz