BETA

VSCodeでC++の競プロ環境構築してたら躓いた

投稿日:2020-02-05
最終更新:2020-02-05

対象

  • OSがWin10でWSLとかを使わずにやりたい
  • VSCodeで書く
  • C++で競プロやろうとしてる人向け

まえがき

ブログ投稿も技術的知識も初心者です。説明も文体も拙いですが忘備録的なものなのでお許しを(免罪符)。

少し前からちまちまと競プロ(というかAtCoder)をやっていたんですけど、参加頻度がまちまちなのとアルゴリズムが理解出来てないのとで全然レートが上がらず、勉強がてらに競プロ関連の本(蟻本螺旋本)を購入しました。

で、これらの本読むついでに「今までPythonで参加してたけどC++も勉強しよう!」という気になったので環境構築しようと思った次第です。

MinGWとVSCodeの導入

OSはWin10なのでWSLでやるとか色々な手段が考えられましたが、こちらのやり方を参考に構築しました。インストールして作業フォルダを作成するところまでは概ね同じ流れなのと面倒なので省きます、許してください…。

ファイル書いてコンパイルしてターミナルに結果を出力する

C++ファイル作成

作業フォルダを作成するところまで済んだらC++のコードを書きます。
今回は環境構築時の確認がしたいだけなので”Hello”と出力するコードです。

#include <bits/stdc++.h>  

using namespace std;  

int main(){  
    cout << "Hello" << endl;  
    return 0;  
}  

これをいきなり書くと恐らく1行目で波線が引かれて「見つからないよ!」とか言われちゃいます。
なので、「Ctrl + Shift + p」でコマンドパレットを開きC/C++:Edit Configurations(JSON)を探して選択します。
これで作業フォルダ内に.vscode/c_cpp_properties.jsonが作成されるかと思います。
このファイルの"includePath"と"compilerPath"は自分のMinGWのインストール先に応じて適宜書き換えて下さい。
"cppStandard"に関してはAtCoder等のジャッジを考慮しての"c++14"です。

{  
    "configurations": [  
        {  
            "name": "Win32",  
            "includePath": [  
                "E:\\Application\\MinGW\\lib\\gcc\\mingw32\\8.2.0\\include"  
            ],  
            "defines": [  
                "_DEBUG",  
                "UNICODE",  
                "_UNICODE"  
            ],  
            "windowsSdkVersion": "10.0.18362.0",  
            "compilerPath": "E:\\Application\\MinGW\\bin\\gcc.exe",  
            "cStandard": "c11",  
            "cppStandard": "c++14",  
            "intelliSenseMode": "gcc-x64"  
        }  
    ],  
    "version": 4  
}

これで波線は消えるはずです。消えなかったら再三参考にしてるここに補足されてるから色々試してみてください。自分は上記の書き方で通ったので解決策の提示ができません…。

batファイル作成

次にbatファイルを作成します。

g++ -std=gnu++1y -O2 main.cpp  

call a.exe  

"main.cpp"の部分に関しては作成したc++ファイルの名前に応じて適宜変えて見てください。
呼び出すa.exeですが、これはMinGWのデフォルト出力がa.exeで、細かいオプション指定を加えてない上記のbatファイルだとまんまそいつが出てくるそうです(参考)。
ポンコツなのでこれを知らず延々と「呼び出すファイル名変えてもa.exeが出てくる…どうして?」と混乱していました。
最初JSONファイルとにらめっこしていたのでそこそこ時間を持っていかれましたが、こういう事は調べればすぐ出るのでやはり検索するのが一番ですね…。

batファイルの中身が作成できたら「Ctrl + Shift + b」を押すと出てくる、

  1. 「実行するタスクがありません。ビルドタスクを構成する…」
  2. 「テンプレートからtasks.jsonを作成」
  3. 「Others」

を順に選択していきます。
これで作成されたtasks.jsonを以下のように書き換えます。

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

ここが参考にしてた記事と異なっています。
"group"とその中身を加えないと動かない事が分からず、ここで大分時間を食いました。

ここまでで作業フォルダ内はこんな感じになっているはずです。

実際に動かす

main.cpp または build.bat のどっちかで「Ctrl + Shift + b」を押すとターミナルで以下のような挙動をしてくれるはずです。

batファイル内の記述通りに動作し、"Hello"の出力が確認できたので終了です。

参考

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

タイトルどおり 基本的にメモっぽい感じ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう