本文面向的對(duì)象是初次接觸搭建C語(yǔ)言開(kāi)發(fā)環(huán)境的學(xué)生或編程愛(ài)好者,以及想脫離諸如VC++6.0等過(guò)時(shí)開(kāi)發(fā)工具從而轉(zhuǎn)用VScode的人群
本文內(nèi)容較多,篇幅較長(zhǎng),可按照需要選擇閱讀,文中如有紕漏,歡迎斧正。
我鄭重承諾下面會(huì)是一篇極為詳細(xì)的教程:
目錄
一、安裝并配置VScode
二:安裝編譯器
1.1.Windows環(huán)境下載并配置MinGW:
1.2.macOS環(huán)境下安裝編譯器(可選gcc/clang編譯器):
配置使用gcc作為編譯器
配置使用clang作為編譯器
macOS環(huán)境下配置VScode使用編譯器
2.(建議)VSCode IntelIiSence的包含路徑設(shè)置
三、配置Debug環(huán)境
附:CodeLLDB插件調(diào)試環(huán)境(優(yōu)雅地Debug)配置
四、參考文檔附錄
1.Windows VSCode使用MinGW配置文件參考
2.macOS VSCode 配置文件
gcc編譯器對(duì)應(yīng)文件參考
clang編譯器對(duì)應(yīng)文件參考
五、文末填坑
Q1:macOS配置gcc為什么要這么麻煩? 既然macOS gcc的安裝和配置比clang麻煩,為什么要把gcc的配置方法也寫(xiě)出來(lái),只說(shuō)clang不就可以了嗎?
Q2:為什么會(huì)寫(xiě)這篇文章?
一、安裝并配置VScode
這里我們可以直接去微軟官網(wǎng)下載安裝,建議在跳轉(zhuǎn)下載頁(yè)面右鍵單擊“direct download link”復(fù)制鏈接到迅雷下載,會(huì)快很多。
直接選擇自己系統(tǒng)對(duì)應(yīng)的Stable版本即可,當(dāng)然也可以試試Insiders公測(cè)版
在VScode的擴(kuò)展界面里搜索并下載如下擴(kuò)展:
1.C/C++ Extension Pack
(擴(kuò)展包里內(nèi)含有C/C++、C/C++ Themes、CMake Tools和CMake,也一起裝了)
2.Chinese(Simplified) 中文漢化包
3.Code Runner(運(yùn)行代碼)
安裝好Code Runner后要記得在它的拓展設(shè)置里勾選“Run In Terminal”
?4.CodeLLDB(更優(yōu)雅的Debug調(diào)試環(huán)境)(在 第三大節(jié)附錄“CodeLLDB插件調(diào)試環(huán)境配置” 有教程)
5.indent-rainbow(可選,可以根據(jù)代碼前縮進(jìn)顏色看出代碼層)
建議:可以在“文件”選項(xiàng)中勾選自動(dòng)保存(macOS版本如圖,在菜單欄;Windows版本的在窗口左上角)
二:安裝編譯器
1.1.Windows環(huán)境下載并配置MinGW:
MinGW的全稱是:Minimalist GNU on Windows,其實(shí)也就是gcc(c/c++編譯器)在Windows上的移植版本。
附:官方開(kāi)源庫(kù)地址,可以下載最新版本的MinGW:(示例:x86_64-12.2.0-release-win32-sjlj-rt_v10-rev0.7z)
下載MingW64壓縮包并解壓至合適的位置,然后在解壓后的文件夾里打開(kāi)bin文件夾按如圖所示復(fù)制文件地址
?然后轉(zhuǎn)到系統(tǒng)設(shè)置->系統(tǒng)->系統(tǒng)信息->高級(jí)系統(tǒng)設(shè)置->環(huán)境變量->系統(tǒng)變量里 選中并編輯Path,然后新建一個(gè)項(xiàng)把剛才的地址給復(fù)制進(jìn)去,點(diǎn)擊保存就可以了(注意是要編輯系統(tǒng)變量里的Path而非用戶變量的Path)
編輯系統(tǒng)變量里的Path而非用戶變量的Path
使用“win+R”快捷鍵,輸入cmd后回車(chē)(另:使用終端(terminal)也是可以的),在彈出的窗口中輸入“gcc -v -E -x c++ -”命令檢驗(yàn)gcc是否配置好,如果和下面的一樣就說(shuō)明OK了。
建議把“#include <...> search starts here:”以下的路徑復(fù)制一下,后面在配置IntelliSense中的包含路徑有用(參見(jiàn)“2.配置VSCode的IntelliSence的包含路徑設(shè)置”)
1.2.macOS環(huán)境下安裝編譯器(可選gcc/clang編譯器):
配置使用gcc作為編譯器
這里借鑒一下前輩的方法,在終端(terminal)中用以下命令回車(chē)安裝homebrew:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
運(yùn)行時(shí)會(huì)提示配置下載源和輸入密碼(輸入密碼的時(shí)候不會(huì)顯示出來(lái),輸完直接回車(chē)),按照提示信息繼續(xù)就好
等配置完homebrew后按照提示信息輸入刷新終端或者手動(dòng)重啟終端,
然后在終端內(nèi)輸入以下命令回車(chē)安裝編譯器gcc:
brew install gcc
安裝完成以后,再次運(yùn)行上述命令,獲取通過(guò)HomeBrew安裝的gcc版本。
?輸入“vim ~/.zprofile”回車(chē)后按下i鍵進(jìn)入編輯模式,按如圖所示的方式復(fù)制并修改以下的文本來(lái)更改系統(tǒng)的配置信息(X代表你gcc的大版本,例如我的是12)。
alias gcc='gcc-X'
alias cc='gcc-X'
alias g++='g++-X'
alias c++='c++-X'
輸入完畢后按esc退出編輯模式,然后輸入英文的“:wq”保留更改并退出文件編輯
在terminal內(nèi)輸入“source ~/.zprofile”(Bash請(qǐng)修改命令為“source ~/.bash_profile“)并回車(chē)應(yīng)用更改后,輸入“gcc -v”以顯示gcc的版本和安裝位置
輸入“gcc -v -E -x c++ -”命令檢驗(yàn)gcc是否配置好并查看頭文件路徑,如果和下面的一樣就說(shuō)明OK了。
建議把“#include <...> search starts here:”下黃框內(nèi)路徑復(fù)制一下,后面在配置IntelliSense 配置中的包含路徑有用(參見(jiàn)“2.配置VSCode的IntelliSence的包含路徑設(shè)置”)。
配置使用clang作為編譯器
首先在terminal內(nèi)用“clang -v”或者“clang --version”(gcc -v也可以,具體會(huì)在文末解釋)回車(chē)檢查Mac是否帶有clang
如果不是以上結(jié)果,直接在terminal里輸入以下命令并回車(chē),然后在彈出的窗口中確認(rèn)安裝clang。
Xcode-select --install
建議:在clang安裝完成后,在終端里運(yùn)行下列命令并復(fù)制框選路徑,后面在配置IntelliSense 配置中的包含路徑有用(參見(jiàn)“2.配置VSCode的IntelliSence的包含路徑設(shè)置”)。
clang -v -E -x c++ -
macOS環(huán)境下配置VScode使用編譯器
在桌面上新建一個(gè)文件夾(不要用中文命名,切記?。?,然后在VScode中打開(kāi)
在VScode打開(kāi)的文件夾里新建一個(gè).c文件,然后按照如圖所示點(diǎn)開(kāi)配置
注意新建的.c文件要在打開(kāi)的文件夾內(nèi)
然后在擴(kuò)展設(shè)置里根據(jù)你自己的情況進(jìn)行配置,完成后會(huì)自動(dòng)生成一個(gè)帶有c_cpp_properties.json文件的.vscode文件夾(C語(yǔ)音填選gcc或clang,C++填選g++或clang++)。
gcc編譯器按照如圖所示配置
clang直接如圖所示設(shè)置,是不是很簡(jiǎn)單?
2.(建議)VSCode IntelIiSence的包含路徑設(shè)置
在剛剛的C語(yǔ)言文件編輯界面中如圖所示操作:
三、配置Debug環(huán)境
在剛剛C語(yǔ)言文件里自己寫(xiě)一個(gè)簡(jiǎn)單的代碼或者直接使用如下代碼:
#include<stdio.h>
int main()
{
for (int i = 0; i < 4; i++)
{
printf("Hello,World!\n");
}
return 0;
}
在某個(gè)函數(shù)的行前打一個(gè)斷點(diǎn),點(diǎn)擊運(yùn)行旁邊的選項(xiàng)按鈕,選擇調(diào)試C/C++文件
?按照各圖下面的說(shuō)明操作,會(huì)在.vscode文件夾里生成task.json和launch.json文件
此處根據(jù)你自己的編譯器選擇對(duì)應(yīng)的調(diào)試配置,完成后會(huì)在.vscode文件夾里生成task.json文件
?點(diǎn)擊“創(chuàng)建 launch.json 文件”,在選擇調(diào)試器時(shí)點(diǎn)選“C++(GDB/LLDB)”生成launch.json文件
注意:macOS版VScode自C/C++插件的1.9.7版本更新后,已經(jīng)不提供補(bǔ)全launch.json文件的功能了(附錄里也會(huì)提供各系統(tǒng)各編譯器環(huán)境下的task.json和launch.json文檔以供參考),當(dāng)然也可以手動(dòng)安裝插件的指定版本使用。
現(xiàn)在你已經(jīng)在電腦上配置好了開(kāi)發(fā)C語(yǔ)言所需的基礎(chǔ)開(kāi)發(fā)環(huán)境了,預(yù)祝你在開(kāi)發(fā)的道路上一路順風(fēng)!
附:CodeLLDB插件調(diào)試環(huán)境(優(yōu)雅地Debug)配置
如圖所示操作:
就可以在VSCode的集成終端里進(jìn)行輸入調(diào)試了。
launch.json
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
四、參考文檔附錄
1.Windows VSCode使用MinGW配置文件參考
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活動(dòng)文件",
"command": "C:/mingw64/bin/gcc.exe", /*此處就放你復(fù)制到Path里面的路徑+/gcc.exe*/
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
""
],
"options": {
"cwd": "C:/mingw64/bin" /*這里直接放你復(fù)制的路徑就好*/
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "調(diào)試器生成的任務(wù)。"
}
],
"version": "2.0.0"
}
launch.json
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和調(diào)試活動(dòng)文件",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "c:/Users/swj/Desktop/s",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",/*這里也是直接放你復(fù)制的路徑,注意/要用\\替代*/
"setupCommands": [
{
"description": "為 gdb 使用整齊打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
2.macOS VSCode 配置文件
gcc編譯器對(duì)應(yīng)文件參考
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc 生成活動(dòng)文件",
"command": "/opt/homebrew/Cellar/gcc/12.2.0/bin/gcc-12",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "調(diào)試器生成的任務(wù)。"
}
],
"version": "2.0.0"
}
launch.json
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和調(diào)試活動(dòng)文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb",
"preLaunchTask": "C/C++: gcc 生成調(diào)試文件"
}
]
}
clang編譯器對(duì)應(yīng)文件參考
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang 生成活動(dòng)文件",
"command": "/usr/bin/clang",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "調(diào)試器生成的任務(wù)。"
}
],
"version": "2.0.0"
}
launch.json
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "clang - 生成和調(diào)試活動(dòng)文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang 生成調(diào)試文件"
}
]
}
五、文末填坑
Q1:macOS配置gcc為什么要這么麻煩? 既然macOS gcc的安裝和配置比clang麻煩,為什么要把gcc的配置方法也寫(xiě)出來(lái),只說(shuō)clang不就可以了嗎?
答:其實(shí)一開(kāi)始的OSX是默認(rèn)使用gcc作為編譯器的,但后面蘋(píng)果自己也整出了一個(gè)編譯器:Clang,而且由于版權(quán)問(wèn)題自macOS10.12之后系統(tǒng)就不自帶gcc編譯器,默認(rèn)使用clang作為c語(yǔ)言編譯器。
但是,蘋(píng)果在更換默認(rèn)編譯器后,為了照顧老用戶對(duì)gcc的使用習(xí)慣,“雞賊”的把有關(guān)gcc的命令行鏈接給了clang,所以如果你不修改并應(yīng)用~/.zprofile(Bash請(qǐng)修改“~/.bash_profile“)直接在terminal里面輸入“gcc -v”和“clang -v”回車(chē),你都會(huì)看到clang的顯示結(jié)果。
?雖然clang是新一代且安裝更方便的編譯器,但Windows上現(xiàn)在都是使用的gcc進(jìn)行的C代碼編譯。而且一般高校計(jì)算機(jī)系C語(yǔ)言的編譯器選擇都是gcc,如果編譯器不同,可能執(zhí)行的結(jié)果也會(huì)有所不同,所以才因此打算講解的全面一點(diǎn)。
Q2:為什么會(huì)寫(xiě)這篇文章?
答:本人計(jì)算機(jī)系大一學(xué)生一枚,之前看M1芯片的Mac可以運(yùn)行iOS應(yīng)用就選擇了M1的MacBook,但是在配置VSCode搭建C語(yǔ)言開(kāi)發(fā)環(huán)境的碰到了不少坑,而且班里同學(xué)們用著不知道哪個(gè)年代的VC++6.0,想換一個(gè)VSCode寫(xiě)代碼,所以就根據(jù)自己的經(jīng)驗(yàn)詳細(xì)總結(jié)出了這篇文章。希望能對(duì)看到并需要的人有所幫助。
本文于2022.10.10 20:55在知乎發(fā)布文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-719974.html
于2023.3.1 20:47轉(zhuǎn)載CSDN文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-719974.html
到了這里,關(guān)于Windows/macOS使用VSCode搭建C/C++的開(kāi)發(fā)/Debug環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!