最近メインのPCをM1 Macにしたのですが、C++で競プロをやる際に、コンパイルあたりで躓いたので記事にしました。
この記事は以下の2つの記事・サイトをBig Surに対応させただけの記事です
環境
- macOS Big Sur
- g++ 11
- Apple Silicon
目標
bits/stdc++.h
を使いたい
デバッグとかは使わない
#解決したいこと
macOSに標準搭載のC++用コンパイラはClang系らしい。
目標の通り、bits/stdc++.h
を使いたいので、コンパイラをgcc系に切り替える
1.確認
$ which g++
/usr/bin/g++
何もしてないから、Clangが出てくる
2.gccのインストール
$ brew install gcc
3.PATH
上記の記事では/usr/local/bin/
にgccがあると書いている。
が、Apple SiliconのArm64では、homebrewのインストール先は/opt/homebrew
配下になるので、/opt/homebrew/bin
にgccがある。
ここからシンボリックリンクを貼る
$ ln -s /opt/homebrew/bin/g++-11 /usr/local/bin/g++
これでOK。確認してみる
$ which g++
/usr/local/bin/g++
4. Visual Studio Code
このままだとVScodeでbits/stdc++.h
をincludeしようとすると警告が出てうざいので治す。
上記の記事の通り、/opt/homebrew/Celler/gcc/11.2.0/include/c++/11.1.0/aarch64-apple-darwin20/bits/stdc++.h
を/opt/homebrew/include
以下に配置する。
$ cd /opt/homebrew
$ mkdir ./include/bits
$ cp ./Celler/gcc/11.2.0/include/c++/11.1.0/aarch64-apple-darwin20/bits/stdc++.h ./include/bits
Intellisenseにbits/stdc++.h
を認識させる
c_cpp_properties.json
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"/opt/homebrew/include/**"
],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/local/bin/g++",
"cStandard": "c17",
"cppStandard": "c++14",
"intelliSenseMode": "macos-gcc-arm64"
}
],
"version": 4
}
おわり