# VS Code C/C++環境建置教學(for Windows) ## Step 1 : 下載[VS code](https://code.visualstudio.com/download) --- ## Step 2 : 進入VS Code >> Extension,並安裝C/C++共三個擴充檔案(如下圖) ![C/C++](https://i.imgur.com/kTVuyaJ.png) --- ## Step 3 : 下載[MSYS2](https://www.msys2.org/) ==安裝路徑非常建議用預設路徑就好(預設為C槽)(這樣下面的步驟才更不容易出錯!!)== ### Q : MSYS2有什麼功用? :::success 透過MSYS2我們可以獲取最新版本的 Mingw-w64 ,它提供了 GCC、Mingw-w64 和其他有用的 C++ 工具和庫的最新本地構建。您可以從 MSYS2 頁面下載最新的安裝程序。 ::: --- ## Step 4 : 開啟你的MSYS2終端 輸入指令 : `pacman -S --needed base-devel mingw-w64-x86_64-toolchain` (這串指令是**安裝Mingw-w64的工具鏈**) ==(下圖為輸入指令後並安裝完Mingw-w64的樣子)== ![MSYS2下載完圖檔](https://i.imgur.com/3YJ7LvG.png) ### <注意>檢查你的Mingw-w64是否成功安裝 ==打開你的命令提示字元並輸入 :== :::success `gcc --version` `g++ --version` `gdb --version` ::: ==如果上面三個指令系統都有成功回應**則代表成功安裝**,但若某一項指令(或以上)Error則代表你可能要重回上面的步驟看哪一部分漏掉了沒安裝好== --- ## Step 5 : 將你的mingw-w64添加到環境變數中 ### 1. 進入Windows的設定頁面 ### 2. 在設定的搜索欄中搜尋 : 環境變數(量) ==(進去後應該會像下圖一樣)== ![環境變數](https://i.imgur.com/L4KwLaV.png) ### 3. 點擊右下角的環境變數 ### 4. 選擇PATH,並點擊編輯 ==(如下圖)== ![PATH](https://i.imgur.com/gYQebzM.png) ### 5. 右上角點擊新增,輸入自己的mingw64路徑(在MSYS2資料夾裡面) 如果前面你的MSYS2路徑並未手動改變(而是預設路徑),那麼新增的路徑為 : `C:\msys64\mingw64\bin` --- ## Step 6 : 建立VS Code的工作區 ### 1. 首先進去VS Code,點選左上角的File,並選擇Open Folder(如下圖) ==記得在選擇前要先創立好想要做為工作區的資料夾== ![Open Folder](https://i.imgur.com/eUZ5vvU.png) ==以我自己來舉例,我將C這個資料夾選擇為我的工作區(如下圖)== ![C file](https://i.imgur.com/SMNPdIs.png) ### 2. 接著在你選擇的資料夾中再建立一個.vscode的資料夾(如下圖) ==先暫時忽略.vscode下面的檔案== ![.vscode](https://i.imgur.com/tkD0BVS.png) --- ## Step 7 : 在.vscode資料夾裡新增數個.json檔,來建立工作區的環境 ### 1. 新增`c_cpp_properties.json`, `launch.json`, `tasks.json`, `settings.json`共4個.json檔案 ==新增完後會像下圖一樣== ![.json檔](https://i.imgur.com/CXu8bNf.png) ![VS code圖](https://i.imgur.com/jMQeZje.png) ### 2. 寫入環境配置(這裡直接將我的程式碼複製貼上對應的json檔即可) ==前提為上面的步驟都和我做得一樣,**特別是安裝路徑**== **c_cpp_properties.json(編譯器路徑和 IntelliSense 設置)** ```=json { "configurations": [ { "name": "GCC", "includePath": ["${workspaceFolder}/**"], "defines": ["_DEBUG", "UNICODE", "_UNICODE"], "windowsSdkVersion": "10.0.18362.0", "compilerPath": "C:/msys64/mingw64/bin/g++.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-gcc-x64" } ], "version": 4 } ``` **launch.json(Debugger設置)** ```=json { "version": "0.2.0", "configurations": [ { "name": "C/C++: g++.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file" } ] } ``` **tasks.json(構建說明)** ```=json { "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe build active file", "command": "C:\\msys64\\mingw64\\bin\\gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "Task generated by Debugger." }, { "type": "cppbuild", "label": "C/C++: g++.exe build active file", "command": "C:/msys64/mingw64/bin/g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:/msys64/mingw64/bin" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" } ``` **settings.json(可寫可不寫)** ==這串程式碼的功能是系統自動幫忙刪除.exe檔,不然每次執行完一次程式都要手動刪除exe檔才可以執行下一次程式== ```=json { "files.exclude": { "**/*.exe":true, }, } ``` --- ## Step 8 : 環境建置完成,來寫我們的第一個程式吧 ! ### 1. 選擇New file ![New file](https://i.imgur.com/Nu0o33U.png) ![01.c](https://i.imgur.com/BIclGBl.png) ==這裡要記得加後綴.c(如果是C++則是.cpp)== ==並且盡量別建立在.vscode裡面,而是建立在工作區最外層(在這裡是C資料夾中)== ### 2. 執行 Hello World ```c= #include <stdio.h> int main() { printf("Hello World !"); } ``` ![Hello World](https://i.imgur.com/lH6t9CN.png) ==點擊Debug C/C++ File(中斷點設在line 5)== ![執行](https://i.imgur.com/mG22VyC.png) ==假如你的程式執行和下圖一樣,則代表你成功了!== ![除錯](https://i.imgur.com/W0akMiJ.png) ==點擊 Run C/C++ File== ==因為上面我環境建置的原因,所以執行程式後會直接在VS code的終端機(TERMINAL)執行(如下圖)== ![成功](https://i.imgur.com/Cr9Qz7x.png) ==若是C++的工作區也是同理,可以直接把.vscode資料夾照搬過去== --- ## 額外好用功能 ### 程式碼自動儲存 原本的程式碼儲存都需要使用CTRL+S,但你也可以點選File >> Auto Save,系統就會自動幫你儲存程式碼 ### 如果你不想使用VS code內建的終端機,而是想使用CMD/Power Shell等等小黑窗來執行程式 : 將`launch.json`中的`"externalConsole"`改為true 但這樣改完後會產生一個問題,就是小黑窗**會一閃而逝** ==**原因為小黑窗輸出資料後就會直接關閉**== #### 1. C的解決辦法 ==這裡一樣用Hello World程式碼來舉例== ```c= #include <stdio.h> #include <windows.h> int main() { printf("Hello World !"); system("pause"); } ``` :::info 新增庫函數<windows.h>以及system("pause"); 強制小黑窗輸出後暫停,而不結束 ::: #### 2. C++的解決辦法 ==直接在程式碼最後加上system("pause");即可== --- ## 參考資料 ### [VS Code 官網教學](https://code.visualstudio.com/docs/cpp/config-mingw) ###### tags: `HackMD教學筆記`