---
title: 'C++編譯環境建構(in VSCode)'
disqus: hackmd
---
C++編譯環境建構(in VSCode)
===



## 大綱
[TOC]
## 前置作業
VScode是一個具擴充能力的"文字編輯器"(本身不帶有編譯器),要能夠編譯程式語言通常需要透過安裝"插件"來獲得能力。
首先,在建構環境前你需要:
1. 安裝 [Visual Studio Code](https://code.visualstudio.com/download)
2. 安裝 VScode的C++插件

3. 下載 [Mingw-w64](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download)並安裝
::: warning
注意 :
- Mingw安裝的路徑請不要含有"**空格**"以及"**中文**",以免產生問題。(不要使用預設的路徑,那有~~他媽的~~空格)
- 建議裝在 "C:\\",本教學以此路徑作為範例
:::
4. 將Mingw內的"bin"目錄的路徑加到Windows環境變數PATH裡面:
1.按下 Win+Pause
2.點選 進階系統設定
3.點選 環境變數

4.選取 系統變數 的 Path,點 編輯
5.點選 新增 ,輸入 Mingw的bin目錄的路徑
5. 測試:在cmd("命令提示字元")輸入 : ``` g++ --version```
若執行成功,則環境變數設定成功。
建立工作目區
---
工作區會除了可以設定工作目錄外,還能保存針對工作區的個別設定,對於配置不同的程式語言編譯環境十分有幫助。
本文也是以以工作區來設定建構環境的。
首先,你需要選定一個資料夾(**資料夾路徑請不要有空格以及中文**)作為我們編譯C/C++所使用的辜作區,

在VSCode開啟資料夾後,點選"另存工作區為",將工作區檔存放於工作資料夾內,

編輯設定檔
---
*產生設定檔目錄(.vscode)和設定檔*
此段落所有操作都是在工作區進行。
C++插件的擴充套件是透過[JSON](https://zh.wikipedia.org/wiki/JSON)檔案來設定的(剛剛完成的工作區也是)。
首先我們先處理插件的JSON設定檔--```c_cpp_properties.json```,按下```Ctrl+Shift+P```叫出選單,找到```C/C++:Edit Configurations (UI)```,進入之後你會看到一個圖像化的介面如下,將"編輯器路徑"改成```C:\Mingw-w64\bin\g++.exe```,並將IntelliSense模式的設定改為```gcc-x64```,存檔後關閉。
接著我們新增一份.cpp檔案,接著按下F5,

會跳出一個選單,選擇第一個選項"C++ (GDB/LLDB)",

接著選"g++.exe ...",

他就會把```launch.json``` 、 ```tasks.json```都改建構好了喔!
*無效則,手動建立json任務檔
再來是```launch.json```設定檔,它會決定當你按下```F5```(或是左邊選單的"偵錯")會執行的"任務",內容應設定為:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/Mingw-w64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
]
}
```
最後是```tasks.json```設定檔,他描述了一個要預先執行的任務內容,並交由launch.json執行("preLaunchTask": "build"),其內容應為:
```json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "C:/Mingw-w64/bin/g++.exe",
"args": [
"-g", "${file}",
"-o", "${fileDirname}/${fileBasenameNoExtension}.exe"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
```
*變數說明 : ${fileDirname}, ${fileBasenameNoExtension}, ${workspaceFolder}, etc..
操作說明
---
每當要編譯.cpp檔案時,要先開啟工作區,接著開啟檔案按下F5,就會編譯並並運行囉。
而程式執行後輸入輸出的結果會在下方"終端機"的標籤頁下。
:::info
如果想要有像是Devc++、CodeBlocks一樣有一個外部的cmd來輸入輸出,你需要修改```launch.json```設定中的 "externalConsole" :

將 "externalConsole" 的設定改為```true```。
:::
## 原理說明
## 參考資料
https://code.visualstudio.com/docs/cpp/config-mingw --微軟寫的非常完整
###### tags: `tutorial`, `C/C++`, `programming`