Help us understand the problem. What is going on with this article?

これが真の競技プログラミング用C++環境構築だ!!!

はじめに

本記事は競技プログラミングを始めたばかりの私がC++での参戦のために環境構築をする話です。
同じような記事はいくつかありましたが、私なりにわかりやすく解説しているので許してください。

目次

  • 競技プログラミングしよう!!!
  • C++で始めたいけど...環境...
  • MinGWのインストール
  • VisualStudioCodeのインストールと基本設定
  • デフォルトのコンパイルはもどかしいっ
  • バッチファイルでコンパイルと実行を簡単に行えるようにしよう!
  • 終わりに
  • 参考

競技プログラミングしよう!!!

競技プログラミングは、名の通りプログラミングの精度と速さで他のプレイヤーと戦ったり、自身のプログラミング力を鍛えることのできるシステムです。毎週のように制限時間を設けた大会が開かれており、どんな人でもチャレンジすることができます。難易度別で多くのテストがあるため、始めたての人から熟練者まで楽しめるつくりになっています。
また、言語についても多くをサポートしているため、相当ニッチな言語でない限りは大丈夫ではないでしょうか。

競技プログラミングの代表的なサイト
AtCoder

C++ではじめたいけど...環境...

競技プログラミングではどうやらC++でやるのがいいらしい(実行時間の関係?)と小耳にはさんだ私は早速C++で競技プログラミングをはじめようとしました。
しかし、VisualStudioCommunityぐらいしか僕のPCにはC++の動く環境はなかったので微妙なところです。プロダクト作るわけでもないのにVisualStudioCommunity立ち上げるのはちょっと...。
なのでcmdから動作させることのできるC++動作環境を構築してVisualStudioCodeから動かせるように目論見ました。
なので、ここからはC++で始めたい人向けになるとおもいます。
あと、私はWindows10ユーザなので、バージョン違う人やOS違う人はもしかしたら役に立たないかも...

MinGWのインストール

まずはこちらのサイトを開きましょう。
すると、もうダウンロードされるので起動します。

起動が終わったらインストール画面に移るので以下の手順で正確な設定を選んでインストールします。

  • まず画面が出たら"install"を選ぶ。
  • 次の画面に移ったら特に何も変えず"continue"
  • 100%になったらインストール完了。
  • デスクトップにMinGWマネージャのショートカットが作成され、起動するはず...
  • 起動したら以下の二つを探して選択し、"Mark for Installation"を選ぶ
    • mingw32-base-bin
    • mingw32-gcc-g++-bin
  • 選択できたらリボンの"Installation"から"Apply Change"を選択する。
  • 100%インストールでき、機能の確認ができたらcloseする。

これでC++コンパイル用のgcc準備できました。

環境変数の設定

続いて、cmdからコマンド実行できるようにパスの設定をします。

  • スタートの検索に"環境変数を編集"と入力し、一番上に出てきたものを選びます。
  • すると小ウィンドウが出てくるため、"環境変数"のボタンを選択します。
  • すると今度はまた小ウィンドウが出てきて様々な設定やらの画面が見られるかと思います。
  • 〇〇のユーザ環境変数(〇〇はユーザ名)とある上の一覧からPathを選択します。
  • するといくつかのパスが出てくると思うので、C:\MinGW\binを追加します。

これでcmd上からgccコマンドが使えるようになったかと思います。
試しにcmdを起動して。gcc -vを入力してみてください。バージョン情報が見れるはずです。

VisualStudioCodeのインストールと基本設定

公式サイトに移動してまずはインストールしましょう。
インストールの流れと日本語対応まではこちらのサイトでやってくれています。

準備ができたら、今度は拡張機能を追加します。

  • リボンから「ファイル>基本設定>拡張機能」と進みます。
  • 入力部分C/C++を入力すると以下の拡張機能が出てくると思うので、インストールしましょう。 キャプチャ.PNG

ザックリではありますが、これでC/C++のコードを書く準備は整いました。

デフォルトのコンパイルはもどかしいっ

では早速、コードを書いてみましょう。

適当にデスクトップ上にでもディレクトリを作って、VisualStudioCodeで開いた後、test.cppファイルを作って以下を入力してください。

test.cpp
#include <iostream>
using namespace std;

int main(){
  printf("test!");
  return 0;
}

続いてVisualStudioCodeでターミナルを開き、以下を実行します。
gcc -o test test.cpp
これによりコンパイルされ、実行できるtest.exeファイルが作成されるはずです。
続いてtestコマンドで実行します。
"test!"と表示されれば成功です。

ですが面倒くさいですよね?一発で実行までしたい...。

バッチファイルでコンパイルと実行を簡単に行えるようにしよう

Windowsには便利にも処理の一連を一括で行うことができる便利なバッチファイルなるものが存在します。
そのため、コマンド一発でコンパイルと実行の両方をすることを可能にすることを可能にします。

理論で説明するよりも体感してもらった方が速いと思うので、以下よりその準備をしていくことにしましょう。

バッチファイルを作る

まずは一つのコマンドで実行までできるように以下のバッチファイルを作成しましょう。

cce.bat
@echo off

if "%~dpnx1" == "" (
    echo Error!: plz point out 1 cppfile as argument
    goto :eof
)

call g++ -o "%~dpn1".exe "%~dpnx1"

if %errorlevel% neq 0 (
    goto :eof
)

echo ----------System runnning---------------
call "%~dpn1".exe
del "%~dpn1".exe
echo.

このバッチファイルを設定すればcce <実行したいcppファイル>でcppファイルを実行することができます。

作成したバッチファイルはCドライブ直下にCodeRunnerというディレクトリを作成し、この中に保存しておきましょう。

コードの解説(不要な方は飛ばして大丈夫です。)

  • 1行目
    @echo offにより、コマンド実行した際のいらない表示を消しています。

  • 3~6行目
    "~dpnx1"が実行したいcppファイルの絶対パスを表しています。このファイルが「=""」つまり引き数が与えられていないエラーの際にはこのif分内に入り、Error!: plz point out 1 cppfile as argumentというエラーを出したうえでgoto :eofでコマンドの実行を終了します。

  • 8行目
    call g++ -o "%~dpn1".exe "%~dpnx1"ここはなんとなくわかるかもしれませんが先ほど直打ちでやったコンパイルコマンドと同じことをしています。そのため、cppファイルをコンパイルして実行可能なファイルを生成します。

  • 10~12行目
    %errorlevel%は変数なのですが、問題ない場合には0、それ以外の場合には0より大きい数が入ります。これがneq 0 (Not equal 0)だった場合、つまり何かしらのエラーが発生した場合にはgccのほうがエラーを出した後、コマンドを終了させます。

  • 14行目
    システムの開始がわかりやすいように表示しています。うっとうしいという方はいらないかもしれませんが。

  • 15行目
    コンパイルして出来上がったexeファイルを実行します。

  • 16行目
    実行の終わったexeファイルを消します。
    私は好きですが、いらない人は消しても大丈夫です。

  • 17行目
    改行を入れます。
    お好みで消してください。

パスの設定

gccの環境変数設定時と同じようにパスの設定を行います。
先ほどと同じようにpathの設定まで移動し、C:\CodeRunnerを設定します。

これでcmdでcce xxx.cppでコンパイルから実行までしてくれるはずです。
一度、cmdやVisualStudioCodeを消し、新たにVisualStusioCodeを起動させたうえで先ほど作ったtest.cppのディレクトリを開き、ターミナルからcce test.cppを実行させてみてください。
実行までしてくれれば成功です。

終わりに

締めとしては、みんなも競技プログラミング始めようってことですね。
良ければご参考に。

参考文献

SoraYamaguchi
学生プログラマー:C/C++/Java/Kotlin/PHP/JS/node/vue/Python.応用情報技術者.ブラック大学ブラック団体の自称インフラ.社畜まっしぐら.プログラムのモチベーションを上げてくれる仲間絶賛募集中!!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした