MacOS CatalinaでVisualStudioCodeの環境設定【競技プログラミング(C++)】


はじめに

今年はなんとなく新しいことを始めたいなと思ってたところ、Google入社エントリというのを発見。面白いので読んでみたらその中で「競技プログラミング」というのが出てきたのでググってみた。この際C++も勉強してみようということでとりあえず、環境設定からだろう。VSCodeの設定の仕方を記載。

Xcodeのインストール

Homebrewを使うにはCommand line tools for Xcodeが必要。

xcode-select --install

ここが選択されてなかった場合、選択する必要あり。

Homebrewのインストール

ここからコピペでインストール
https://brew.sh/index_ja.html

brew --version // version確認
brew doctor    // 問題をチェックしてくれるコマンド
// Your system is ready to brewと表示できればok

gccのインストール

MacOSは標準でC++のコンパイラのClangが既に入ってるが、
C++の標準ライブラリの集合体であるbits/stdc++.hが使えない。
実務レベルでは微妙らしいが、競技プログラミングではこれを使用出来る方が効率が良い。
んで、gccはこれが使えるので、切り替える作業が必要。

brew install gcc

// clang(実体)のままになっている
which gcc
/usr/bin/gcc
which g++
/usr/bin/g++ 

// 切り替え
ln -s /usr/local/bin/gcc-10 /usr/local/bin/gcc
ln -s /usr/local/bin/g++-10 /usr/local/bin/g++

// gccが実行されるようになる
which gcc
/usr/local/bin/gcc
which g++
/usr/local/bin/g++ 

VSCodeダウンロード

Downloadはこちらから
https://azure.microsoft.com/ja-jp/products/visual-studio-code/

プラグインのインストール




こちらをインストールする。

Code Runnerの設定


実行結果を確認したい場合、上記の「▷」を押下して確認出来るようにしたいので、下記の設定をする。
command + Shift + psetting.json入力後、Open setting(JSON)を開き下記を追加する。

    "code-runner.clearPreviousOutput": true,
    "code-runner.runInTerminal": true,

Code-Runner: Run In Terminalの設定


INSALLEDでCode Runnerの右に「歯車アイコン」があるのでExtension Settingsを選択。


下部の方にCode-Runner: Run In Terminalがあるのでチェックを入れる。

tasks.jsonの作成

command + Shift + pTasks: Configure Taskを入力して適当にtasks.jsonを作成する。ファイルが自動生成された後にエディター画面に表示され、タスクランナーの構成表示される。

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: g++ debug build",
            "command": "/usr/local/bin/g++",
            "args": [
                "-O0",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "/usr/local/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

コピペで上書きしておく。

launch.jsonの作成


デバッグメニューを開きRun And Debugを押下してlaunch.jsonの作成をする

C++(GDB/LLDB)を選択すると自動で作成される。これで使えるようになる。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "lldb",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "C/C++: g++ debug build"
        }
    ]
}

※ もし、作れない場合はこれをコピペで貼り付ける。

#include<bits/stdc++.h>が使えない問題を解消

ls -la /usr/local/Cellar/gcc/10.2.0_2/include/c++/10.2.0/x86_64-apple-darwin19/bits/stdc++.h
/usr/local/Cellar/gcc/10.2.0_2/include/c++/10.2.0/x86_64-apple-darwin19/bits/stdc++.h

cd /usr/local/include/
cp /usr/local/Cellar/gcc/10.2.0_2/include/c++/10.2.0/x86_64-apple-darwin19/bits/stdc++.h .

自分のインストールしているVersionによってPATHは異なるので確認は必要。
こちらでVSCodeを再起動して使えるようにする。

コードを書いて右上の「▷」を押下すると自動でEditerのTerminalが立ち上がり結果が表示される。
入力する場合は、Terminalに入力して結果を表示される。

コンパイルがうまくいかない時

突然Debug機能が使えなくなることがあり、頭を悩ませていました。

Error内容.
collect2: fatal error: cannot find 'ld'

直し方としてはsetting.jsonで指定している
下記がfalseだったのをtrueにした。

"terminal.integrated.inheritEnv": false
参考記事