Windowsで競プロ(競技プログラミング)用途のC/C++環境設定について僕なりにまとめてみました。
また、今回は統合開発環境に依存するものについては扱いません。(Visual Studio等)
C/C++用コンパイラのインストール
まず、環境に必須なのはコンパイラです。CLやGCCなどがあります。
CL: Visual C++ Build Tools
ダウンロード:https://visualstudio.microsoft.com/ja/downloads/
かの有名な統合開発環境Visual Studioで使われているツール群です。僕はこれをお勧めできません。これで使われているコンパイラはCLというものなのですが、コマンドラインオプションがMicrosoft特有の難解さでうまく応用が利きません。また、ディレクトリ構造も複雑なのでテキストエディタでの設定も難しいです。
GCC/G++: WSL (Windows Subsystem for Linux) -> Ubuntu
何故か僕の周りではこれを利用している人が多いです。聞いたところによると皆あるQiita記事を参考にしているようです。
確かにWindows環境を壊すことなく設定できるうえにパッケージマネージャーであるaptを利用できるので便利です。(例えば、sudo apt install tmux
でtmux
というアプリがインストールできる。)また、Unix系コマンドの学習にもつながります。
しかし、Windows標準で動かせるアプリを作ることができません。
持論ではありますが、プログラミング入門者は何か動くものを作れたという達成感を味わいたいものです。ある程度文法を学んだらGUIアプリを作りたくなります。
図星だった人には次のアプリをお勧めします。
GCC/G++: MinGW (Minimalist GNU for Windows)
Cygwinと似ていますがこれについての説明は割愛します。
MinGWではLinuxで使うGCC/G++等GNUツールチェーンのWindows移植版です。簡単にいえば、上で紹介したUbuntuと同じコマンドでWindowsアプリを作ることができます。また、WindowsAPI(Windows特有の機能群)を利用できるのもメリットのひとつです。
ただし、MinGWにはインストール方法が複数あるので注意が必要です。
MinGW32
ダウンロード:https://sourceforge.net/projects/mingw/
単純に「Windows MinGW」で検索するとここに行き着くと思います。この機能群では32bitアプリを作成することができます。しかし、今となっては64bitOSが主流となっているので折角なら64bit版のMinGWを利用しましょう。
MinGW-w64
ダウンロード:https://sourceforge.net/projects/mingw-w64/
こちらは64bitアプリ作成に対応しています。インストール形式は上のMinGW(32bit)とは異なりますが気にする必要はありません。標準でmake等の機能も入っており競プロ用途には必要十分です。
もちろんデメリットもあります。GUIアプリを作りたいと思ったときの設定が少し難しいです。場合によっては自分でコンパイルしてパスを通す必要が出てきます。
以上の茶番を通して僕が勧める環境はこちらです。
GCC/G++: MSYS2(minimal system)->MinGW-w64
ダウンロード:https://www.msys2.org/
MSYS2というのは軽量のUNIX風シェル環境です。つまり、UNIX系コマンドが使った学習ができます。また、PacmanというArch Linuxでも使われているパッケージマネージャーが導入されているため追加機能のインストールも容易です。(C++のGUIライブラリであるQTを使いたくなったらpacman -S mingw-w64-x86_64-qt5
でインストール可)
加えてMinGWはMSYS2の環境にインストールされるため、ProgramFilesは汚れません。
正直、WSL(Ubuntu)とMinGWのいいとこどりだと思っています。
初期設定は複雑なので以下に記載しておきます。
- MSYS2 MSYSを起動し、
pacman -Syu
と入力してパッケージを更新 - 一度再起動し、MinGW-w64をインストール
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
- (ユーザー)環境変数の
Path
にC:\msys2\mingw64\bin\
を追加 - (ユーザー)環境変数に
C_INCLUDE_PATH
、CPLUS_INCLUDE_PATH
を追加し、どちらも変数値にC:\msys2/mingw64/include/
を設定 - (ユーザー)環境変数に
LIBRARY_PATH
を追加し、変数値にC:\msys2\mingw64\lib\
を設定
エディタ設定 ~ VSCode ~
今回はデバッグの設定については割愛します。
- 拡張機能のC/C++をインストール。(.c .cppを開くと勧めてくる)
- MinGW-w64の場合、環境設定が行われたバッチファイルが用意されているため、
settings.json
の"terminal.integrated.shell.windows"
にバッチファイルのパスを設定します - 作業フォルダ(プログラムを作るフォルダ)を開く。
Ctrl+Shift+P
でコマンドパレットを開き、C/C++: Edit configurations (JSON)
を選択。c_cpp_properties.json
が生成される。Ctrl+Shift+P
でコマンドパレットを開き、Tasks: Configure Default Build Task
からg++
を選択。tasks.json
が生成される。- プログラムを作成し、
Ctrl+Shift+B
でコンパイル。ターミナルで{ファイル名}.exe
と入力して実行。
前項の作業で環境変数にコンパイラのパスを通しておくとVSCodeがコンパイラを認識してくれるためc_cpp_properties.json
、tasks.json
は自動で設定されます。
以上で基本的な環境設定は終了となります。コマンドばかりで意味わからないと思っているそこのあなた、僕の説明下手が要因のひとつです。重要なのは様々な意見を取り入れることだと思っていますので、これは参考程度にして頂けると幸いです。
コメント