VS code 初次上手, 建構 C/C++環境
決定擁抱 Visual Studio Code (VSCode),因為不想 IDE換來換去。首先建造一個 C/C++的環境,網路文章參考了許多,感覺有點亂,花了點時間實驗,走了些冤枉路之後,才稍微清楚一點。
我想先提醒: 別被混淆了,MinGW 和 LLVM 其實是兩套編譯器!
為何我這樣說?我先解釋清楚, 然後才列整個建構 C/C++環境的步驟細節。
其實在微軟的文件裡,Hello World 區分為四個教學文件:
我想先提醒: 別被混淆了,MinGW 和 LLVM 其實是兩套編譯器!
為何我這樣說?我先解釋清楚, 然後才列整個建構 C/C++環境的步驟細節。
我參考過了許多網路文章(如最後的列表),一路實驗,首先試用微軟 VS2019的編譯器,沒什麼問題,只是覺得它較占空間,於是決定轉進。但是發覺大多數文章,都是同時要裝 MinGW 和 LLVM的,還多了 Clang這東東?各家解釋又不盡相同....好亂!
先看一眼 VSCode:
其實在微軟的文件裡,Hello World 區分為四個教學文件:
第一個"GCC on Windows" 其實就是 MinGW,那麼第四個有寫著 LLVM和 Mac,原本以為是只有 Mac才可用的編譯器,但偏偏LLVM又有 windows版本可以下載,難道不能用?只是配合他人?Clang和 LLVM又是何種關係?
後來參考 WiKi資料: LLVM,Clang,MinGW,還有這篇文章,原來這是編譯器歷史發展的原因,隨著跨平台的趨勢,MinGW算是GCC在 windows的移植;後來編譯器演變成區分前端和後端,Clang算前端, LLVM算是後端;後來又演變成三層:前端,中間端和後端。
以前後端來說,又可以有不同組合:
以前後端來說,又可以有不同組合:
仔細檢查 LLVM的執行目錄(bin), 也可以發現 Clang !
於是,我猜想:是否能夠在 Windows環境,使用 Clang/LLVM 編譯?
經過一番努力,成功了,答案是可以!
但是為什麼教學只寫它用在Mac呢? 我發現問題在於 debugger,LLVM的 debugger叫做 LLDB,但是 LLDB還不支援 Windows系統.
好了,以下開始我們的安裝與測試吧~~
- - - - - - - - - - - -
安裝Step-1: 安裝 VSCode
安裝Step-2: 安裝 MinGW
- - - - - - - - - - - -
測試Step-2: 建立 build的設定檔
設定檔是 tasks.json,但是其實不用自己慢慢輸入;只要按 終端機>設定預設建置工作
就會跳出選單,選單是列出你系統中有安裝的可選項目,這次我們要選 g++的
就會自動寫好 tasks.json:
可以檢查一下裡面的"command"是否有指向你電腦所安裝的 MinGW 目錄
測試Step-3: build
只要按 終端機>執行建置工作 或者快捷鍵 ctrl+shift+B
將會跳出終端機畫面在 panel 區
測試Step-4: 第一次 debug需要建立設定檔
設定檔是 launch.json,但是其實不用自己慢慢輸入;只要按 偵錯>新增組態
首先選擇 GDB/LLDB
再來是選擇 g++
VSCode 就會自動建立 launch.json 並且進入 debug準備
測試Step-5: debug的基本操作
首先,可以按 F5 進入 debug 模式;
但是請注意,一般沒有設置中斷點的話,會直接執行停不下來!
想要設中斷點,只要自程式碼的行號前面,滑鼠點按即可:
進入debug後, 下方 status bar會變色,同時上方會出現偵錯小功能表,程式停在中斷點,側欄中自斷顯示當前變數:
到目前為止, 我們是使用 MinGW裡面的 g++ 為編譯器,debug使用 gdb;
LLVM根本不用安裝!!
C/C++ Clang Command Adapter 根本不用安裝!!
經過一番努力,成功了,答案是可以!
但是為什麼教學只寫它用在Mac呢? 我發現問題在於 debugger,LLVM的 debugger叫做 LLDB,但是 LLDB還不支援 Windows系統.
好了,以下開始我們的安裝與測試吧~~
- - - - - - - - - - - -
安裝Step-1: 安裝 VSCode
- 它其實是個可執行的 exe檔案:
- 可參考官方文件,初步了解VSCode.... 最基本各區域解說如下圖: 除了最下方藍色底那行是 status bar之外,最左邊淺藍色框是 active bar,綠色框是 side bar / 側欄 (可用 ctrl-B 開關它),紅色框是 editor group,粉紅色框是 panel (可用 ctrl-J 開關它)
- 需要把執行目錄(bin) 加到環境變數 PATH 裡面去,以我的電腦為例,完整目錄是:
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
安裝Step-3: 安裝 VSCode 擴充套件
- 繁體中文語言套件
- C/C++ (C/C++ 語言的支援)
- Code Runner (跑程式)
- - - - - - - - - - - -
測試Step-1: 建立程式 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; }
測試Step-2: 建立 build的設定檔
設定檔是 tasks.json,但是其實不用自己慢慢輸入;只要按 終端機>設定預設建置工作
就會跳出選單,選單是列出你系統中有安裝的可選項目,這次我們要選 g++的
就會自動寫好 tasks.json:
{ // 如需 tasks.json 格式的文件, // 請參閱 https://go.microsoft.com/fwlink/?LinkId=733558 "version": "2.0.0", "tasks": [ { "type": "shell", "label": "g++.exe build active file", "command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true } } ] }
可以檢查一下裡面的"command"是否有指向你電腦所安裝的 MinGW 目錄
測試Step-3: build
只要按 終端機>執行建置工作 或者快捷鍵 ctrl+shift+B
將會跳出終端機畫面在 panel 區
測試Step-4: 第一次 debug需要建立設定檔
設定檔是 launch.json,但是其實不用自己慢慢輸入;只要按 偵錯>新增組態
首先選擇 GDB/LLDB
再來是選擇 g++
VSCode 就會自動建立 launch.json 並且進入 debug準備
測試Step-5: debug的基本操作
首先,可以按 F5 進入 debug 模式;
但是請注意,一般沒有設置中斷點的話,會直接執行停不下來!
想要設中斷點,只要自程式碼的行號前面,滑鼠點按即可:
進入debug後, 下方 status bar會變色,同時上方會出現偵錯小功能表,程式停在中斷點,側欄中自斷顯示當前變數:
到目前為止, 我們是使用 MinGW裡面的 g++ 為編譯器,debug使用 gdb;
LLVM根本不用安裝!!
C/C++ Clang Command Adapter 根本不用安裝!!
- - - - - - - - - - - -
參考過的微軟英文文件:
參考過的網路文章:
參考過的微軟英文文件:
- Overview (微軟文件的根目錄)
- C/C++ for Visual Studio Code
- Using GCC with MinGW
- Configure VS Code for Microsoft C++
- Using Clang in Visual Studio Code
- Debug C++ in Visual Studio Code
參考過的網路文章:
留言
張貼留言