競プロ環境 for Mac - btk15049/home GitHub Wiki

使う&用意する環境

  • MacOS前提です
  • VSCode
  • C++(GCC)

目標

  • VimやEmacsよりはリッチなIDE環境を目指す
    • 補完
    • エディタ上でコンパイル
    • 構文エラーチェック
  • +自由な拡張機能
  • サンプルの自動ダウンロードや自動テストをできるようにする
  • VSに近い高機能なデバッグ機能(lldb+可視化)

※ これVimとかEmacsでもできるよって意見があるのは分かりますが、拡張がしやすいのを優先していますのでご了承ください

準備

g++(gcc)のインストール

Macにデフォルトで入ってるgccは、めちゃくちゃ古くて使い物にならない
ので、homebrewを使ってインストールをする(ない人はggって)

gccのバージョン確認 

$ g++ --version

ここでhomebrewとか表示されたら、homebrewでインストールしたgccが既に入ってるはず

gccのインストール

$ brew install gcc

これやったあとに、さっきのバージョンの確認でhomebrewで入れたものになってたらひとまずOK

Online Judge Tools

知り合いのうさぎさん(@a3VtYQo)が作っているやつ
Winだと導入が大変だったけど、Macだと結構楽に入れれたし、便利なので導入した  

基本的な機能  

  • URLからサンプルケースの自動取得
  • ↑で取得したサンプルの自動実行&AC判定

python3のインストール

online-judge-toolsはpython3で実装されていて、インストールはpip3を使うとできる
そのため、python3のインストールが必要
あるかどうかわからない人は、$ python3 --versionとか打つと確認できます

$ brew install python3

online-judge-toolsのインストール

$ pip3 install online-judge-tools

コマンドライン上での使い方

サンプルの自動取得

test/下にサンプルケースが保存される

$ oj dl 問題のURL
サンプルの自動実行

./a.outが実行されて、TCのプラグインと同じノリで実行してくれます!楽!!

oj test

Visual Studio Code for Mac

インストール

とりあえずやります(流石に説明いらないよね)

拡張機能

これらは普通に拡張機能のところでインストールできます

拡張機能を使うための設定

キーバインドの設定

  1. Command + k,sで設定画面を開く
  2. keybindings.jsonが開くので、以下をコピペ
[

  {

    "key": "shift+enter",

    "command": "extension.jumpy-word",

    "when": "editorTextFocus"

  },

  {

    "key": "ctrl+[",

    "command": "extension.jumpy-exit",

    "when": "editorTextFocus && jumpy.isJumpyMode"

  },

  {

    "key": "escape",

    "command": "extension.jumpy-exit",

    "when": "editorTextFocus && jumpy.isJumpyMode"

  },

  {

    "key": "cmd+shift+,",

    "command": "extension.runner.start",

    "when":"editorTextFocus"

  },

  {

    "key": "cmd+shift+.",

    "command": "extension.runner.stop",

  },

]

VSCode上でonline-judge-toolsを実行するための準備

settings.json

Code->Preferences->Settings 上部の・・・をクリックして、settings.jsonを開く

何も考えずに以下をコピペ(ここでは、~/sh/cpp.shにスクリプトを入れることを想定してるので、)

{

    "C_Cpp.default.cppStandard": "c++14”,

    "runner.languageMap": {

        "cpp":"~/sh/cpp.sh"

    },

}

cpp.sh

~/sh/下に'cpp.sh'として以下を保存
https://github.com/btk15049/home/blob/master/pro/sh/cpp.sh
その後、以下のようにして権限を付与

$ chmod +x ~/sh/cpp.sh

実行方法

実装

してください

コンパイル及び実行

テストケースをすべて実行したい場合

提出前の最終確認向け
※ cppファイルがすべて変更を保存済みでない場合、失敗することがあります
Command+Shift+,cpp.shが実行され、内部で以下が順に実行される

  1. サンプルケースのダウンロード
  2. コンパイル
  3. 全サンプルの実行及び判定

標準入力を用いてデバッグ実行をしたい場合

手動をしたい場合やデバッグをしたいとき

  1. debug.cppのinclude部分にコンパイル実行したいcppファイルのパスを書く
  2. Command+Shift+b,return(g++を選択),return(continue with scanning the task outputを選択)でコンパイル
    下のような表示が出たらコンパイル成功です
> Executing task: g++ -O0 -g -std=c++14 -Wall -Wextra debug.cpp <

Terminal will be reused by tasks, press any key to close it.
  1. デバッグ実行
    画面左部の、上から4番目の虫アイコン(デバッグ)を選択
    緑三角の再生ボタンを押すとデバッグ開始
    標準入力と標準出力は、画面下部のTERMINALタブで実行可能(デバッグ開始時はDEBUG CONSOLEタブが開かれてるのでTERMINALタブの選択が必要)
    ブレークポイントを設定すると、その時点での各変数の中身が左側のペインで確認できるので、printfデバッグは基本的に不要です

Code Runner

Runnerと似ている拡張機能
ここでも、cppファイルからショートカットキーでシェル呼び出すのでほぼ同じ動作を使います
決定的に異なるのは、出力(実行)にvscodeのterminalを使用でき,標準入力も扱えるようになる点(Runnerはoutput only)

  1. install
  2. Code->Preferences->Extensions->{}マーク (Open Settings (JSON))
  3. 以下のようにsettings.jsonに書き加える
  "code-runner.clearPreviousOutput": true, // 実行前にターミナルクリア
  "code-runner.runInTerminal": true, // 出力をターミナルに(標準入力使用可
  "code-runner.saveFileBeforeRun": true, // 実行前セーブ  
  "code-runner.customCommand": "cd $dir && ~/sh/run_all.sh $fileName", //shell実行
    "code-runner.executorMap": {
      "cpp": "cd $dir && ~/sh/run_usual.sh $fileName" //shell実行
    }
  1. Code->Preferences->Keyboard Shortcuts
  2. 次のキーバインドを変更
"extension.runner.start" : "sft+cmd+;"
"extension.runner.stop" : "sft+cmd+'"
"code-runner.runCustomCommand"  : "sft+cmd+,"
"code-runner.run"  : "sft+cmd+."

⚠️ **GitHub.com Fallback** ⚠️