C/C++をVSCodeで開発するための環境構築

# はじめに
## ひとこと
アクセスしていただきありがとうございます。
筆者がCの環境を構築するときにかなり苦戦したため、これから頑張ろうとされている方に同じ思いをして欲しくないと思い、この記事を投稿しました。

## 目的
* VSCodeでC/C++の編集、実行ができる環境を構築する
* （任意）VSCodeでC/C++のデバッグができる環境を構築する
* （任意）構築した環境を更新する

## 検証済みの環境
* **64ビット** の **Windows11**

:::note
お使いのWindowsが何ビットOSかを確認する方法はこちら
https://qiita.com/ochx/items/cc56b6f06fcee03dad96
:::

* **管理者権限がある** Windowsアカウント

## ご注意
* 記事のすべての情報は **2025/05/15現在** のものです
* ただし、画像の切り替えが完了していないため、画像が **実際とは異なる場合** があります
* 記事には **Gemini Advancedが出力した内容のうち、筆者自身がソース元などを確認し正しいと判断したもの** を含みます
* エクスプローラーにおけるファイルとフォルダの **コピー** 、 **切り取り** 、 **貼り付け** 、 **削除** などの基礎的な操作ができることを前提としています
* 「検証済みの環境」で記事の通りに構築しても、他の要因によって正常に動作しない可能性があります。その際はコメントしていただけますと対応いたします

## この記事での略語
| 略語 | 正式名称 |
|:-:|:-:|
| VSCode | Visual Studio Code |

# 1. （環境を更新したい方向け）古いMinGWを削除する

:::note
ここでは、この記事の方法で構築された環境を用いて説明します。
この記事とは異なる方法で構築された環境の場合、フォルダのパスなどが異なる場合があります。
:::

## 1. 既存のmingw64フォルダを削除します
1. **エクスプローラー** を開きます
2. ナビゲーション ウインドウ（エクスプローラーの左側）の **PC** 内の **Windows (C:)** ドライブを開きます
3. **Program Files (x86)** フォルダを開きます
4. **mingw64** フォルダを **削除** します

# 2. MinGWを準備する
## 1. MinGWの7zipファイルをダウンロードします
1つ目のURLから最新のバージョンのMinGWを直接、ダウンロードできます。
2つ目のURLから古いバージョンのMinGWを閲覧できます。

https://github.com/niXman/mingw-builds-binaries/releases/download/15.1.0-rt_v12-rev0/x86_64-15.1.0-release-win32-seh-ucrt-rt_v12-rev0.7z

https://github.com/niXman/mingw-builds-binaries/releases/

ダウンロードが完了したら、次に進んでください。

:::note
MinGW（ミンジーダブリュー）とはMinimalist GNU for Windowsの略称で、Windowsで **GNUツールチェーン** と **GCC** を利用できるようにする開発環境です。
MinGWについて筆者自身も説明できるほど詳しくなく、またここで説明するには長くなりすぎるため割愛させていただきます。
今回は **C/C++をコンパイルするため** にGCCを使用します。
GCC（ジーシーシー）とはGNU Compiler Collection（グヌーコンパイラコレクション）の略称で、 **複数の言語をコンパイルできるコンパイラ群** です。
:::

:::note
MinGWのファイル名に含まれる各単語の意味について
ファイル名の例: ``x86_64-15.1.0-release-win32-seh-ucrt-rt_v12-rev0.7z``

x86_64: これはターゲットとするアーキテクチャを示しています。x86_64は、64ビット版のx86アーキテクチャを指します。

15.1.0: これはGCCのバージョン番号を示しています。

release: これはビルドの種類を示しています。releaseは、安定版としてリリースされたビルドであることを意味します。

win32: これはスレッドモデルを示しています。win32は、Windowsが提供するWindows API （Win32 API）を意味します。

seh: これは例外処理の方式を示しています。sehは **Structured Exception Handling** の略で、Windows固有の例外処理機構を使用していることを意味します。

ucrt: これはCランタイムライブラリの種類を示しています。uvcrtは **Universal C Runtime** の略で、MinGWの生成する実行ファイルがWindows10以降のWindowsに標準的にインストールされているランタイムライブラリに依存することを意味します。

rt_v12: これはランタイムライブラリのバージョンを示しています。

rev0.7z: これはリビジョン番号を示しています。バグ修正や細かな変更が行われた場合に、リビジョン番号が更新されることがあります。
:::

## 2. ダウンロードした7zipファイルを展開します
1. **エクスプローラー** を開きます
2. ナビゲーション ウィンドウ（エクスプローラーの左側）の **ダウンロード** フォルダを開きます
3. ダウンロードした7zipファイルを選択します
4. **すべて展開** を選択します
    \> 新しく **アーカイブ抽出** ウィンドウが開きます
![スクリーンショット (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/5ba96bc8-07ba-5f7b-83b9-4a62cae51333.png)
5.  **完了時に展開されたファイルを表示する** を選択します
6.  **展開** を選択します
    \> 展開が始まり完了したら、**アーカイブ抽出** ウィンドウが閉じ、新しくエクスプローラーが開きます
![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/3b9ff068-8c92-4948-db29-0441fbf3c968.png)

展開が完了したら、次に進んでください

:::note
Windows11（の特定のビルド）から、Windowsの機能として様々な形式の圧縮ファイルを展開できるようになりました
:::

## 3. mingw64フォルダを移動させます
1. **mingw64** フォルダを切り取ります
2. ナビゲーション ウィンドウ（エクスプローラーの左側）の **PC** 内の **Windows (C:)** ドライブを開きます
3. **Program Files (x86)** フォルダを開きます
![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/5fb496a8-c408-f788-8ec8-c78f0975acfb.png)
4. **mingw64** フォルダを貼り付けます
    \> 新しく **対象のフォルダーへのアクセスは拒否されました** ウィンドウが開きます
![スクリーンショット (65).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/2053d52d-dc6b-6ccd-fcbf-9feb7047204a.png)

5. **続行** を選択します
    \> **対象のフォルダーへのアクセスは拒否されました** ウィンドウが閉じ、貼り付けされます

:::note warn
Program Files (x86)フォルダに直接、展開することはできません。
:::

:::note
環境を更新したい方向け
古いmingw64フォルダとパスが変わらない場合は、これで完了です。
「5. 正しく設定できたか確認します」で設定できているか確認してください。
:::

## 4. 環境変数を設定します
1. **mingw64** フォルダを開きます
2. **bin** フォルダを選択します
3. **…** を選択します
4. **パスのコピー** を選択します
![スクリーンショット (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/e5e94dab-2b17-2dad-7103-4a56b3b3c7ed.png)
5. **設定** を開きます
6. **システム** を選択します
7. **バージョン情報** を選択します
![スクリーンショット (66).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/f0cd32d5-b8e0-3e14-2302-164743b8b9eb.png)
8. **デバイスの仕様** 内の **システムの詳細設定** を選択します
    \> 新しく **システムのプロパティ** ウィンドウが開きます
9. **環境変数** を選択します
    \> 新しく **環境変数** が開きます
10. **システム環境変数** 内の **Path** を選択します
11. **編集** を選択します
    \> 新しく **環境変数名の編集** が開きます
![qiita_c&c++_vscode_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/6fb37e67-4abf-8e7c-2965-1354c1509a70.png)
12. **新規**を選択します
13. コピーしたアドレスをペーストし、文字列の先頭と末尾にある **\"** を消します
    ```
    // 間違っている例
    "C:\Program Files (x86)\mingw64\bin"

    // 正しい例
    C:\Program Files (x86)\mingw64\bin
    ```
14. **環境変数名の編集** の **OK** を選択します
    \> **環境変数名の編集** が閉じます
![qiita_c&c++_vscode_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/fcee60ab-82b0-1b50-22e5-927a37d8f33f.png)
15. **環境変数** の **OK** を選択します
    \> **環境変数** が閉じます
16. **システムのプロパティ** ウインドウの **OK** を選択します
    \> **システムのプロパティ** ウインドウが閉じます

ここまで完了したらエクスプローラーと設定は閉じても大丈夫です

:::note
これでbinフォルダ内のすべてのexeファイルを実行しやすくなります
:::

## 5. 正しく設定できたか確認します
1. 下記のコードをコピーします
    ```
    gcc --version
    ```
2. **コマンドプロンプト** を開きます（「Windowsキー + Rキー」を押し、 **cmd** と入力し、 「Enterキー」を押すと開きます）
3. コードをペーストします
4. **Enterキー** を押します
5. 次のような出力になれば正しく設定できています
    ```
    gcc.exe (x86_64-win32-seh-rev0, Built by MinGW-Builds project) 15.1.0
    Copyright (C) 2025 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    ```

ここまで完了したらコマンドプロンプトは閉じても大丈夫です

# 2. VSCodeを準備する
## 1. VSCodeをインストールします
1. **Microsoft Store** を開きます
2. 上部の検索バーに **vscode** と入力し、検索します
3. **VSCode** をインストールします
![スクリーンショット (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/3865ba8a-07a7-5be8-1df7-67c1e31fea69.png)
インストールが完了したら、次に進んでください

ここまで完了したらMicrosoft Storeは閉じても大丈夫です

:::note
VSCodeはカスタマイズ性が高いソースコードエディタです
様々な拡張機能などによって、自分好みのエディタにすることができます
:::

## 2. （日本語で使いたい方向け）Japanese Language Pack for Visual Studio Codeをインストールします
1. **VSCode** を開きます
2. 左側のサイドバーの **Extensions** を選択します
3. **Japanese Language Pack for Visual Studio Code** と検索し、インストールします
![スクリーンショット (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/71ecf47d-98e9-931e-b8ca-52b6e6253cb2.png)
インストールが完了したら、次に進んでください

:::note
**～ Language Pack for Visual Studio Code** はVSCodeを各言語で利用できるようにするための拡張機能です
:::

## 3. （日本語で使いたい方向け）Japanese Language Pack for Visual Studio Codeを設定します
1. 上部のメニューバーの **View** を選択します
2. **Command Pallet** を選択します
![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/4fa15221-d70c-8db6-1a9b-8d36eb46ee9f.png)
3. **Configure Display Language** と入力します
![スクリーンショット (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/45583088-3065-1bc5-c5b6-1fc8356f0616.png)
4. **日本語(ja)** を選択します
![スクリーンショット (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/e79b71af-2e19-ebe8-c827-4baa43f41943.png)
5. **VSCode** を再起動します

## 4. C/C++ Extension Packをインストールします
「2. （任意）Japanese Language Pack for Visual Studio Codeをインストールします」と同様の手順で **C/C++ Extension Pack** をインストールします
インストールが完了したら、 **VSCode** を再起動します

:::note
**C/C++ Extension Pack**　はC/C++の編集を便利にするための拡張機能をまとめたパッケージです
:::

## 5. Code Runnerをインストールします
「2. （任意）Japanese Language Pack for Visual Studio Codeをインストールします」と同様の手順で **Code Runner** をインストールします
インストールが完了したら、 **VSCode** を再起動します

:::note
**Code Runner** はコードの実行を簡単にするための拡張機能です
:::

## 5. Code Runnerを設定します
1. **Code Runner** の **「歯車」のアイコン** を選択します
2. **拡張機能の設定** を開きます
![スクリーンショット (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/f797a636-0dc9-bc91-d58a-2bcad41e278e.png)
3. **Run In Terminal** をチェックします
![スクリーンショット (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/fcab33c5-fe8b-1d2a-a457-e9abbfffe964.png)

:::note
これでターミナルから入力をできるようになります
:::

# 3. C/C++ファイルを実行およびデバッグ(任意)できるか確認します

:::note
CとC++で共通している内容については、Cで説明しています。
:::

## 1. C/C++ファイルを実行ができるか確認します

1. 左上の **ファイル** を選択します
2. **新しいテキストファイル** を選択します
![スクリーンショット (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/47f0178b-276d-f628-7849-76b2051ded46.png)
3. **言語の選択** を選択します
4. **C** または **C++** を選択します
![スクリーンショット (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/6030a44b-46b4-c5cd-30ad-9eefba3f234f.png)
5. 次のサンプルコードをコピーし、エディタに貼り付けます
    **C** の場合
    ```c
    #include <stdio.h>
    
    void main(void) {
        printf("Hello World");
    }
    ```
    **C++** の場合
    ```c++
    #include <iostream>
    using namespace std;

    int main()
    {
        cout << "Hello World" << endl;
    }
    ```
6. 右上の **Run Code** を選択します
(コンパイラを尋ねられたら **gcc** を選択します)
![スクリーンショット (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/0f610e18-34b4-cfdf-e4f0-5499f53faab8.png)
7. 下部に **ターミナル** が表示され、**Hello World** と表示されれば完了です
![スクリーンショット (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/8091e719-a351-54d2-7856-c5d2ce22ec18.png)

## 2. （デバッグしたい方向け）C/C++ファイルをデバッグできるようにします

:::note warn
デバッグしたいファイルのパスに日本語が含まれる場合、デバッグできない可能性があります

条件に当てはまるかを確認する方法
1. エクスプローラーを開く
2. デバッグしたいC/C++ファイルを選択する
3. 右クリックでメニューを開きます
4. パスのコピーを選択します
4. コピーしたパスをメモ帳などに貼り付けし、日本語が含まれているか確認します
:::


（「3. C/C++ファイルを実行およびデバッグ(任意)できるか確認します」の「1. C/C++ファイルを実行ができるか確認します」の続きです）
1. 左上の **ファイル** を選択します
2. **保存** を選択します
![スクリーンショット (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/73362269-da37-b740-6af5-03e3fc285203.png)
3. 任意の名前を付けて、任意のフォルダに保存します
例では、ファイル名を **HelloWorld.c** とします
C++の場合は、 **HelloWorld.cpp** としてください
![スクリーンショット (82).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/a31ec24a-e3ec-5a76-b169-765425e21b7a.png)
4. 左側のサイドバーの **実行とデバッグ** を選択します
5. **フォルダーを開いた** を選択します
![スクリーンショット (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/deea5b61-f02d-fbad-b11a-4bc049c315eb.png)
6. 3でファイルを保存したフォルダを選択します
    \> VSCodeのウインドウが一度閉じ、再度開きます
7. 左側のサイドバーの **エクスプローラー** を選択します
8. **HelloWorld.c** または **HelloWorld.cpp** を選択します
9. 左側のサイドバーの **実行とデバッグ** を選択します
10. **launch.jsonファイルを作成します** を選択します
11. **C++ (GDB/LLDB)** を選択します
![スクリーンショット (83).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/899c8712-aada-192b-dfe2-c75e975651ab.png)
12. 元から書いてあるテキストをすべて削除します
13. 以下のコードをコピーして、エディタに貼り付けます
    `"program"`の値は、ファイル名と同じにしてください
    ```json: launch.json
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/HelloWorld.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "/path/to/gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            }
        ]
    }
    ```
14. 先ほど同じように、 **保存** します
15. 先ほど同じように、 **エクスプローラー** から **HelloWorld.c** または **HelloWorld.cpp** を選択します
16. **4行目** の **4** の左側で、赤い丸が表示されるところにカーソルを移動させ、選択します
17. 右上の **三角** を選択します
18. **C/C++ ファイルのデバッグ** を選択します
![スクリーンショット (85).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/abd247fb-0459-b3c3-fe49-8bdfcc86ae18.png)
19. **C/C++:gcc.exe アクティブ ファイルのビルドとデバッグ** を選択します
20. デバッグが開始され、実行が4行目で **停止** すれば完了です
![スクリーンショット (86).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969427/5bab9d65-f287-bd0a-de8d-fd77a7177595.png)

# さいごに
## ひとこと
最後までご覧いただきありがとうございます。
ご意見などがございましたら、遠慮なくコメントいただけると幸いです。
また、MinGWのバージョンが更新されるたびに本記事を更新し、Qiitaの機能である「ストックしているユーザーに変更の通知を送る」を用いて通知しております。ご希望の方はストックもよろしくお願いいたします。