1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-10-31

競プロをやってみたいなと思ったので、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というファイルができます。

Screen Shot 2021-10-31 at 16.49.11.png

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コマンドを叩くと、
Screen Shot 2021-10-31 at 17.56.52.png

画像のように自動でコンパイルしてくれて、正しく動いていることが確認できると思います!

これで環境構築の完成です!!

おまけ

vscodeでc++を書くときは**C/C++**という拡張子も入れておきましょう!
この拡張子を入れると
コードフォーマットと、自動補完をしてくれます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?