Visual Studio Code での C++ の初期設定 (Windows x gcc(MinGW) 編)          

# はじめに

以下の環境で、Visual Studio Code で C++ のコーディング／ビルド／デバッグを実行できるようにするまでの初期設定手順になります。Qiita はじめ、各種ブログなどで同様の設定方法がいくつも紹介されていますが、アップデートが頻繁に行われ、最新の仕様を反映しているものがなかなかないので、2018年9月に設定した手順を自分用のメモとして残しておきます。

* OS
 * Windows
* Compiler
 * gcc(MinGW)
* Visual Studio Code
 * バージョン: 1.27.0

## 注意
繰り返しになりますがアップデートが頻繁に行われ、記載した情報がすぐに古くなってしまい役立たなくなる可能性があるので、現時点では英語しかないみたいですが、[公式ドキュメント](https://code.visualstudio.com/docs/languages/cpp) を参照することを強くお勧めします。公式ドキュメントは最新の仕様に追従しているはずなので、公式ドキュメントに従って設定すれば問題ないと思います。本記事も基本的に公式ドキュメントを日本語化して簡易化しただけのもので、あくまで2018年9月時点の情報です。

# 前提 (本記事では説明しないもの)
* [Visual Studio Code](https://code.visualstudio.com/) がインストールされていること
 * 本記事では、拡張機能の [Japanese Language Pack for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja) をインストールして日本語化してある UI で説明します
* [MinGW](http://www.mingw.org/) がインストールされていること

# 手順
* 「C/C++ 拡張機能」 のインストール
* インテリセンス (IntelliSense) の設定
* ビルドの設定
* デバッグの設定

## 「C/C++ 拡張機能」 のインストール
* Visual Studio Code を開く
* 左のサイドバーの拡張機能のボタン（四角いアイコン）をクリック

![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/ec9c434b-7989-bc01-54eb-d57163c86f90.png)

* テキストボックスに "C++" と入力して検索
一番上に表示される（はず）、作成者が Microsoft になっている拡張機能を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/1d2947f4-5214-390e-dbc6-6006a673389c.png)

* 「インストール」 をクリックしてインストール

アイコンがビリヤードのボールみたいになっていれば正解

![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/e74e5918-df59-6342-c4fa-21aef6cc5869.png)

* 「再読み込み」 をクリック
 
インストールが完了したら、「再読み込み」ボタンが表示されるので、こちらをクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/b31bf5d3-68cc-bfc8-2377-16c127d8af07.png)

## インテリセンス (IntelliSense) の設定
コードナビゲーションや自動補完の機能を有効にするために必要になります。
これを設定しなくても、ビルドやデバッグは実行できます。

事前にプロジェクトのフォルダを開いておいてください。

* 「c_cpp_properties.json」 を設定する
 * 「Ctrl+Shift+P」 で、コマンドパレットを開く
 * 「C/Cpp: Edit configurations...」 を選択
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/b7facc3a-46af-1121-e964-1373c6808e48.png)
 * 「.vscode」 フォルダの中に 「c_cpp_properties.json」 ファイルが作成される  
※「.vscode」 というフォルダが無い場合は、プロジェクトフォルダ直下に自動で作成されます
 * 「c_cpp_properties.json」 を下記のように設定する


```
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}",
                "C:\\MinGW\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "8.1",
            "compilerPath": "C:\\mingw-w64\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}
```

[こちら](https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/Getting%20started%20with%20IntelliSense%20configuration.md) を参照のうえ、includePath には、include したいファイルがあるフォルダを適宜追加してください。
上記の例では、""C:\\MinGW\\include"" を追加しています。

なお、include ファイルや、その依存関係先のファイルが見つからない場合は、include 文に緑色の二重線が表示され、カーソルをあてると黄色い電球アイコンが表示されます。こちらをクリックすると下記のようなダイアログが表示されるので、ここで 「Edit "includePath" setting」 を選択して、「c_cpp_properties.json」 を編集することもできます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/cb4e61a2-d53c-8547-e734-8555b46f7c18.png)

## ビルドの設定

ビルドするための設定を行います。

* 「tasks.json」 の設定
 * 「Ctrl+Shift+P」 で、コマンドパレットを開く
 * 「Tasks: Configure Task」 を選択する
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/a5866ef4-568c-80f1-7b68-ed9169ba77a6.png)
 * 「テンプレートから tasks.json を生成」 をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/010419c0-2d2c-bfdc-8fd8-7f1ee6f618e4.png)
 * 「Others 任意の外部コマンドを実行する例」 をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/2b5b0fcd-35fd-351e-16e1-ece10c59047f.png)

 * 「.vscode」 フォルの中に 「tasks.json」 ファイルが作成される
 * 「tasks.json」 を下記のように設定する

```
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "sample",
            "type": "shell",
            "command": "g++",
            "args": ["-g", "sample.cpp"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
```

label、args (コマンドラインの引数) の値は、実際のファイル名やビルドオプションにあわせて適宜変更して下さい。
これで、ビルドまで出来るようになります。ビルドのショートカットは 「Ctrl+Shift+B」 になります。

## デバッグの設定

デバッグ実行するための設定を行います。

* 「launch.json」 の作成
 * 左のサイドバーのデバッグボタン（丸いアイコン）をクリック  
  （「Ctrl+Shift+D」 でも構いません）  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/67219556-9dc8-947e-af06-9c5d19276875.png)
 * "構成がありません" と表示されている、右側の歯車マークをクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/a63dfd4c-8d14-a272-a8e3-59bc84ac6146.png)
 * 環境の選択のドロップダウンで、「C++ (GDB/LLDB)」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/36cc457a-2c0d-a454-a53d-a79603ab7a31.png)
 * 「.vscode」 フォルの中に 「launch.json」 ファイルが作成される
 * 「launch.json」 を下記のように設定する

```
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/a.exe",
            "args": [],
            "environment": [],
            "cwd": "${workspaceFolder}",
            "stopAtEntry": false,
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "c:\\mingw\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
```

[こちら](https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md) を参照のうえ、適宜修正して下さい。

これでデバッグ実行できるようになります。
デバッグの実行は、メニューバーの 「デバック(D)」-> [デバッグの開始(S)]  の選択でも出来ますし、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/1788e6dd-5a65-7c69-3e66-1601b2c54e13.png)
F5 キー押下でも出来ますし、↓の緑色の三角アイコン押下でも出来ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/65831/5c0e855c-870f-3244-06e8-c7401a50bd70.png)

# おわり

上記の手順で、最低限、ビルド、デバッグまでは実行できるようになります。[コードフォーマッターの設定](https://code.visualstudio.com/docs/languages/cpp#_code-formatting)、[コードナビゲーションの利用方法](https://code.visualstudio.com/docs/languages/cpp#_navigating-code)、[デバッグの方法](https://code.visualstudio.com/docs/languages/cpp#_debugging)などについては公式ページをご覧ください。