28
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C++の競プロ環境を作る M1 Mac(Big Sur)

Last updated at Posted at 2021-09-05

最近メインの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
}

おわり

28
9
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
28
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?