macで<bits/stdc++.h>を使えるようにする

macOS Catalina で使えるようにする記事はこちら(2019年12月22日追記)

 

C++競プロerのみなさん,bits/stdc++.h はご存知でしょうか.

gccコンパイラで用意されているヘッダで,これをインクルードするとすべてのヘッダがインクルードされます.非常に便利です.

が,こいつをインクルードするのは非常に大変です.PC初心者はお手上げです.

競プロを初めて約半年,やっと正式にインクルードできるようになったので,ここに書きたいと思います.

 

環境

macOS Mojave (MacBook Pro 2016)

Xcode  Version 10.2 

 

今までの状況

今回設定する以前までは,Xcodeのインクルードパスが通っているディレクトリに,githubからダウンロードしたstdc++.hを突っ込んでいました.

この方法では,Xcodeが更新されるたびにstdc++.hが消えてしまいます.

 

gccのインストール

まずbrewgccをインストールします(brewがわからない人はHomebrewとググってください)

$ brew install gcc

しかしこれだけでは stdc++.hをインクルードできない可能性が大きいです.
なぜならXcodeに入っているgccが優先的に動くからです
 

gccシンボリックリンクを貼る

brewで入れたgccを使うために,コマンド検索パスの通っているディレクトリにgccシンボリックリンクを貼ります

brewで入れたパッケージは /usr/local/Cellar に保存されます.本体は .../Cellar/gcc/8.2.0/bin/g++-8とgcc-8ですので,これらのリンクを貼ります

$ ln -s /usr/local/Cellar/gcc/8.2.0/bin/g++-8 /usr/local/bin

$ ln -s /usr/local/Cellar/gcc/8.2.0/bin/gcc-8 /usr/local/bin

 

xcode-select --install を実行

自分の環境では,assert.hなどのヘッダが見つからないと怒られたので,これを実行して,ヘッダをインストールするパッケージを入れる準備をします

$ xcode-select --install

 

ヘッダをインストール

先ほど入れたCommandLineToolsの中にあるインストーラを起動します

$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

インストールが終わったら完了だと思います.