VS code 初次上手, 建構 C/C++環境

決定擁抱 Visual Studio Code (VSCode),因為不想 IDE換來換去。首先建造一個 C/C++的環境,網路文章參考了許多,感覺有點亂,花了點時間實驗,走了些冤枉路之後,才稍微清楚一點。

我想先提醒: 別被混淆了,MinGW 和 LLVM 其實是兩套編譯器!

為何我這樣說?我先解釋清楚, 然後才列整個建構 C/C++環境的步驟細節。


我參考過了許多網路文章(如最後的列表),一路實驗,首先試用微軟 VS2019的編譯器,沒什麼問題,只是覺得它較占空間,於是決定轉進。但是發覺大多數文章,都是同時要裝 MinGW 和 LLVM的,還多了 Clang這東東?各家解釋又不盡相同....好亂!

先看一眼  VSCode:

其實在微軟的文件裡,Hello World 區分為四個教學文件:

第一個"GCC on Windows" 其實就是 MinGW,那麼第四個有寫著 LLVM和 Mac,原本以為是只有 Mac才可用的編譯器,但偏偏LLVM又有 windows版本可以下載,難道不能用?只是配合他人?Clang和 LLVM又是何種關係?

後來參考 WiKi資料: LLVMClangMinGW,還有這篇文章,原來這是編譯器歷史發展的原因,隨著跨平台的趨勢,MinGW算是GCC在 windows的移植;後來編譯器演變成區分前端和後端,Clang算前端, LLVM算是後端;後來又演變成三層:前端,中間端和後端。

以前後端來說,又可以有不同組合:

仔細檢查 LLVM的執行目錄(bin), 也可以發現 Clang !

於是,我猜想:是否能夠在 Windows環境,使用 Clang/LLVM 編譯?
經過一番努力,成功了,答案是可以!

但是為什麼教學只寫它用在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 開關它)

安裝Step-2: 安裝 MinGW
  • 現在電腦大都為64位元,我們其實都是要安裝 MinGW-w64 (不要用舊的 32位元版喔!)
  • 直接到下載點,尋找定下載下面這個
  • 安裝時,只要注意Architecture 選擇 x86-64
  • 需要把執行目錄(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 (跑程式)




這些擴充套件,都是讓側欄顯示擴充套件( active bar選 Extensions 或者按 ctrl+shift+X)之後,打入關鍵字就會自動搜尋出來,以中文語言套件為例,如圖,編輯區會顯示套件的說明文件(超方便),按下綠色底的 install 即可安裝。
附註:上圖中黃色框那個按鈕,是安裝 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 根本不用安裝!!


留言

這個網誌中的熱門文章

Window Form 程式的安裝檔案製作