20211031のMacに関する記事は1件です。

Macで競技プロの環境構築(C++)する

競プロをやってみたいなと思ったので、macで競プロをやるためにC++の環境構築をしてみます。 まず、競プロのC++のコンパイラにはClang系とgcc系の二つがあるらしく、macではデフォルトのC++のコンパイラとしてClang系が標準で搭載されています。 しかし、競プロ視点からClang系とgcc系のコンパイラどっちが良いかというとgcc系のコンパイラの方が良いそうです。 理由はgccにのみstdc++.hというC++の標準ライブラリの集合体が入っており、#include 一行書くと、必要なライブラリがだいたい揃う。からだそうです。 そのため、今回は Macにgcc系のC++のコンパイラを入れることを目標にやっていきます。 gccをインストールします。 以下のコマンドでインストールすることができます。 brew install gcc インストールすると、/usr/local/下に、g++-11というファイルができます。 pathの設定 gccをインストールすると、mac上にはclangと、gccが同居している状態になります。 clang => /usr/bin/g++ gcc => /usr/local/bin/g++-11 この状態でg++コマンドを打つとclangの方が呼び出されます。 $ which g++ /usr/bin/g++ `` gccの方を呼び出せるようにしたいので、以下のコマンドを入力します。 ````terminal $ ln -s /usr/local/bin/g++-11 /usr/local/bin/g++ このコマンドは/usr/local/bin/にg++(gcc)のシンボリックリンクを作成するためのコマンドです。 lnコマンドについてはこちらの記事が大変わかりやすかったです 少しこちらの記事でも解説をすると、lnコマンドとは、同じiノードをもったファイル(リンク)を作成するためのコマンドです。 iノードとは、ファイルとディスク上に存在するファイルの実体データを対応させる番号のことです。 lnの-sのオプションを付けるとシンボリックリンクというものを作成することができ、リンクを作成するというとシンボリックリンクを指すことが多いです。 ハードリンクはiノード番号をリンクさせるのに対して、シンボリックリンクはフォルダのリンクを作成することができます。 こちらの違いを詳しく知りたい人は、こちらの記事を参考にするのが良いと思います。(自分には少し難しかったです。。) シンボリックリンクを作成した後に、ターミナルを再起動するとg++コマンドを叩いた時にgccの方を呼び出すことができるようになります! $ which g++ /usr/local/bin/g++ 元に戻したい場合は $ rm /usr/local/bin/g++ というコマンドを打つと元に戻ることができます。 ※なぜ、$ ln -s /usr/local/bin/g++-11 /usr/local/bin/g++のコマンドを打つとg++の呼び出す方がgccに変わるのか? 答えは$PATHの優先順位が/usr/binよりも/usr/local/binの方が高いからです。 $PATHの優先順位は $ echo $PATH で見ることができます。 先にあるパスの方が優先的に呼び出されます。 今回で言うと、 /usr/local/bin/g++と/usr/bin/g++ この二つのパスでは/usr/local/bin/g++のパスの方が優先順位が高いのでg++コマンドを打つと/usr/local/bin/g++が呼び出されます。 これでコンパイルの設定は終わったので、次はvscodeに移動します。 code-runnerという拡張子をインストールする vscodeのcode-runnerという拡張子をインストールしてください。 インストールしvscodeを再起動したら、vscodeの設定も完了です。 動作確認をする 最後にうまく行くかの動作確認を行いましょう。 vscodeでmain.cppというファイルを作り、以下コードをコピペしてください main.cpp #include <bits/stdc++.h> using namespace std; int main(){ int a, b; cin >> a; cin >> b; cout << a + b << endl; } そして、control + option + nコマンドを叩くと、 画像のように自動でコンパイルしてくれて、正しく動いていることが確認できると思います! これで環境構築の完成です!! おまけ vscodeでc++を書くときはC/C++という拡張子も入れておきましょう! この拡張子を入れると コードフォーマットと、自動補完をしてくれます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む