積雲が映像制作したMV『RANGEFINDER』公開中
専門88IO

WindowsでC/C++の競プロ環境選択

専門

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 tmuxtmuxというアプリがインストールできる。)また、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のいいとこどりだと思っています。

初期設定は複雑なので以下に記載しておきます。

  1. MSYS2 MSYSを起動し、pacman -Syuと入力してパッケージを更新
  2. 一度再起動し、MinGW-w64をインストールpacman -S base-develpacman -S mingw-w64-x86_64-toolchain
  3. (ユーザー)環境変数のPathC:\msys2\mingw64\bin\を追加
  4. (ユーザー)環境変数にC_INCLUDE_PATHCPLUS_INCLUDE_PATHを追加し、どちらも変数値にC:\msys2/mingw64/include/を設定
  5. (ユーザー)環境変数にLIBRARY_PATHを追加し、変数値にC:\msys2\mingw64\lib\を設定
スポンサーリンク

エディタ設定 ~ VSCode ~

今回はデバッグの設定については割愛します。

  1. 拡張機能のC/C++をインストール。(.c .cppを開くと勧めてくる)
  2. MinGW-w64の場合、環境設定が行われたバッチファイルが用意されているため、settings.json"terminal.integrated.shell.windows"にバッチファイルのパスを設定します
  3. 作業フォルダ(プログラムを作るフォルダ)を開く。
    1. Ctrl+Shift+Pでコマンドパレットを開き、C/C++: Edit configurations (JSON)を選択。c_cpp_properties.jsonが生成される。
    2. Ctrl+Shift+Pでコマンドパレットを開き、Tasks: Configure Default Build Taskからg++を選択。tasks.jsonが生成される。
    3. プログラムを作成し、Ctrl+Shift+Bでコンパイル。ターミナルで{ファイル名}.exeと入力して実行。

前項の作業で環境変数にコンパイラのパスを通しておくとVSCodeがコンパイラを認識してくれるためc_cpp_properties.jsontasks.jsonは自動で設定されます。


以上で基本的な環境設定は終了となります。コマンドばかりで意味わからないと思っているそこのあなた、僕の説明下手が要因のひとつです。重要なのは様々な意見を取り入れることだと思っていますので、これは参考程度にして頂けると幸いです。

コメント

タイトルとURLをコピーしました