VScodeでの競プロ環境構築 ( windows , C++ )


はじめに

Dockerを使い始めて、WSL2環境にしたせいで今までのデバック環境がぶっ壊れた。そこで新たな環境構築をして沼にハマり丸一日潰したときの備忘録です。

コツ

・ファイルやパスに絶対日本語やスペーズを含めな

・違う環境を構築するときはsettingの従来の設定を引きずらないように削除する

・tasks.jsonなどの中身を早めに理解する(以下が参考になります)

  ・VS Codeの設定をキレイに変数置換
  https://qiita.com/ShortArrow/items/dc0c8cacd696154510f1
 

下準備

フォルダ構成は以下のようにするのがやりやすいです。

atcorder
|
|-.vscode
|
|-ABC
|  |-1
|    | A.cpp
|    | B.cpp
|    | C.cpp
|
|-ARC
|  |...
|
|.problem.exe
|.problem.in( 方法1では不要 )

方法

簡単な方法から順に

1.MingGWを使う
2.WSL1を利用する
3.WSL2を利用してDockerで古めのUbuntuをつかう

1.MingGWを使う

無難of無難で一番ラクです。どのくらい楽かというと大学の授業ですら扱われるくらいです。こちら記事に詳しいやり方が書いてあります。
https://qiita.com/yamazaki3104/items/91cabd58980c6c17754e

フォルダ構成が↑でやる場合には

tasks.json,
launch.json,
c_cpp_properties.json

を以下のようにしてください。
//
の部分を手動で変えました。インストールしたminggwのbinファイルの場所を自分で特定してください。(以下は例です)

tasks.json
{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "g++.exe build active file",
      //
      "command": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
      "args": [
        "-g",
        "${file}",
        "-o",
        "${workspaceFolder}\\problem.exe"
      ],
      //
      "options": {
        "cwd": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin"
      },
      "problemMatcher": [
        "$gcc"
      ],
      //
      "group": {
        "kind": "build",
        "isDefault": true
      }
    },
  ]
}
launch.json
{
  // IntelliSense を使用して利用可能な属性を学べます。
  // 既存の属性の説明をホバーして表示します。
  // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "g++.exe - アクティブ ファイルのビルドとデバッグ",
      "type": "cppdbg",
      "request": "launch",
      //
      "program": "${workspaceFolder}\\problem.exe",
      "args": [],
      "stopAtEntry": false,
      //
      "cwd": "${workspaceFolder}",
      "environment": [],
      //
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
      "setupCommands": [
        {
          "description": "gdb の再フォーマットを有効にする",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "C/C++: g++.exe アクティブなファイルのビルド"
    }
  ]
}
c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe"
        }
    ],
    "version": 4
}

2.WSL1を利用する

 工事中...orz

3.WSL2を利用してDockerで古めのUbuntuをつかう

 工事中...orz