一、環境准備
1. 安裝C/C++編譯器(MSYS2和mingw-w64的下載安裝配置教程)
首先我們要知道,VS code只是一個編輯器(editor,與記事本是同一類程序),並不是IDE(Integrated Development Environment,集成開發環境,例如Visual Studio 2017)。
它本身並沒有帶任何語言的編譯器(compiler),對任何語言都沒有特殊優待,只是提供了許多豐富的、針對各種語言的插件。
於是,我們需要安裝一個C/C++的編譯器,並配置好環境變量。我們可以選擇mingw-w64(gcc在windows下的對應)或Clang(蘋果公司主導的基於LLVM的C/C++/Objective-C編譯器)。
這里推薦安裝MSYS2:一個Windows下的仿Linux環境,Micro system即仿Linux的微系統,具有空間小、運行快、與Windows有一定的兼容性的優點。
關鍵MSYS2還有類似於Linux中yum的pacman軟件包管理器,可以幫我們方便的安裝各種各樣的編程工具包和工具鏈。
1)打開清華源鏡像的MSYS2主頁:msys2 | 鏡像站使用幫助 | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror
https://mirror.tuna.tsinghua.edu.cn/help/msys2/
接着按照主頁配置pacman軟件包的服務器信息,記得下載安裝最新版本的MSYS2,這樣才能保證同步更新的成功。
2)安裝配置mingw-w64
- Mingw-w64是Windows編譯C/C++源代碼的程序集,為了安裝該軟件,須執行如下命令,即可安裝編譯C/C++程序所需的編譯工具如:gcc、g++、make等。
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
- 此步驟安裝的軟件包較多,因此可能需要一定時間,取決於網絡和電腦配置,約需3-5分鍾。
注意:
MSYS2 MSYS是程序的主終端,也是安裝后自動打開的紫色圖標黑框,以上步驟都可以在此框中進行,但安裝完畢后輸入 gcc-v 會無法識別。
所以,以后我們每次都打開MSYS2 MinGW 64-bit這個藍色圖標黑框,在這個黑框里面就能正確識別所有的C/C++編譯工具。我們也可以在這個黑框中安裝vi,然后像使用Linux終端一樣使用這個黑框。
3)配置環境變量
因為我們只是在MSYS2這個虛擬機中安裝了mingw64,而本機並沒有識別,所以需要我們手動添加環境變量:
這樣,我們的Windows系統就能識別到安裝的mingw-w64-x86_64-toolchain全部工具鏈,從而在 cmd 和 powershell 終端中能夠直接識別各種C/C++編譯命令。
2. 在VS code中安裝C/C++的基本插件
首先點擊最左邊的“插件”圖標,通過搜索安裝如下三個插件:
- C/C++:包含C/C++基本依賴項的插件,必須安裝。
- Chinese (Simplified) Language:中文簡體包,可選安裝。
- Code Runner:多語言全能的代碼運行插件,安裝后右上角會多一個運行圖標,鼠標右鍵菜單也多一個Run Code選項,可選安裝。
二、Code Runner插件自動編譯運行(不能調試)
安裝此插件之后,直接可以通過右上角的圖標或鼠標右鍵菜單來運行程序,結果直接在名為Code的輸出中顯示。
注意:但是在代碼中使用了scanf、cin等輸入語句時,會因為Code輸出是只讀的,導致程序無法輸入數據也無法執行完畢,只能直接關閉重啟VScode。
重啟VScode后,我們需要依次打開:文件>首選項>設置>用戶>拓展>Run Code Configuration,找到Run In Terminal勾選上
這時,代碼會在內部名叫Code的集成終端下執行,能夠進行輸入,且可以點擊右上角的垃圾桶圖標可以直接結束程序運行並關閉集成終端。
PS:插件編譯運行的注意問題
Code Runner插件只能自動的編譯並運行,類似的還有C/C++ Compile Run插件等,它們本質上是代替用戶輸入了編譯和執行命令,但存在一些局限。
例如,當我們在代碼中使用了winsock2.h這個頭文件時,使用插件運行就會產生鏈接錯誤:
#include <winsock2.h>
#include <stdio.h>
int main(){ SOCKET client_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); printf("Compile successfully!"); }
原因是,插件都是按照預先設定好的規則,自動在終端執行編譯和運行的指令,也就是上面紅色划線部分的命令:
gcc A.c -o A ; .\A
但是使用gcc/g++來編譯使用了winsock2.h的代碼時,我們應該在編譯指令中增加“-lwsock32”指令,而插件默認情況下不會添加這條指令。
正確的編譯指令應該是: gcc A.c -o A -lwsock32
解決方法就是打開終端,我們手動輸入以上編譯命令,再輸入“.\A”即可
三、配置json文件來編譯、調試、運行(重點!通用方式)
如果我們想要在VScode中調試代碼,那么配置json文件來是最方便省事的方法,下面用例子來說明:
1. 打開一個文件夾,創建一個cpp文件,例如下面的main.cpp:
(按 Ctrl + ~ 打開終端窗口)
2. 點擊運行和調試圖標,並點擊“運行和調試”按鈕
選擇C++的(GDB/LLDB)來調試,會自動創建一個launch.json文件
c++代碼就選擇g++編譯器,c代碼就選擇gcc編譯器。(vs code會自動從環境變量中查找存在的編譯器)
以我最新版本的VS code,點擊之后的結果如下:
我們可以看到,系統自動生成了launch.json和tasks.json文件,並打開了一個編譯任務終端和調試任務終端,當前終端是調試任務終端,執行main.cpp的代碼。
到此,系統已經自動為我們生成了編譯和調試的json配置文件,我們可以直接使用。使用時記得打斷點,不然調試程序就直接運行完畢了。
四、Json配置文件詳解
前面已經介紹過,我們需要的就是對代碼文件進行編譯、調試和運行,本質上就是在終端中執行g++或gcc編譯命令、gdb調試命令、.\main.exe命令。
所以,json配置文件就是幫我們自動輸入這些命令而已。
1. launch.json文件解析
2. tasks.json文件解析
3. 添加自定義配置
在launch.json文件的右下角,我們可以點擊“添加配置”:
如果,我們選擇 C/C++:(gdb)啟動 ,則會生成如下配置代碼段:
我們可以看到,只需要設置 program和miDebuggerPath兩個字段的值即可,其他的值與 "g++.exe - 生成和調試活動文件" 完全相同。
還注意到,這個配置沒有 preLaunchTask 字段,我們也可以自己添加上去。
- 顯然,這個gdb配置的作用是:單獨只調試而不編譯生成。
- 同樣的,我們也可以添加 C/C++:(Windows)啟動 ,完成 只運行而不編譯生成 的任務。
- 我們也可以添加 C/C++:(Windows)啟動 配置后,再添加一個preLaunchTask字段,完成 編譯和運行 的任務。
總之,大家可以添加不同的配置,進行不同的嘗試。最后祝大家都能玩轉VS code,成為一名出色的程序猿~~~