競プロ環境 for Mac - btk15049/home GitHub Wiki
- MacOS前提です
- VSCode
- C++(GCC)
- VimやEmacsよりはリッチなIDE環境を目指す
- 補完
- エディタ上でコンパイル
- 構文エラーチェック
- +自由な拡張機能
- サンプルの自動ダウンロードや自動テストをできるようにする
- VSに近い高機能なデバッグ機能(lldb+可視化)
※ これVimとかEmacsでもできるよって意見があるのは分かりますが、拡張がしやすいのを優先していますのでご了承ください
Macにデフォルトで入ってるgccは、めちゃくちゃ古くて使い物にならない
ので、homebrewを使ってインストールをする(ない人はggって)
$ g++ --version
ここでhomebrewとか表示されたら、homebrewでインストールしたgccが既に入ってるはず
$ brew install gcc
これやったあとに、さっきのバージョンの確認でhomebrewで入れたものになってたらひとまずOK
知り合いのうさぎさん(@a3VtYQo)が作っているやつ
Winだと導入が大変だったけど、Macだと結構楽に入れれたし、便利なので導入した
- URLからサンプルケースの自動取得
- ↑で取得したサンプルの自動実行&AC判定
online-judge-toolsはpython3で実装されていて、インストールはpip3を使うとできる
そのため、python3のインストールが必要
あるかどうかわからない人は、$ python3 --version
とか打つと確認できます
$ brew install python3
$ pip3 install online-judge-tools
test/
下にサンプルケースが保存される
$ oj dl 問題のURL
./a.out
が実行されて、TCのプラグインと同じノリで実行してくれます!楽!!
oj test
とりあえずやります(流石に説明いらないよね)
- Jumpy
https://confrage.jp/vscode%E3%81%AE%E4%BE%BF%E5%88%A9%E3%81%AA%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/ - Runner
さっきのonline judge toolsをVSCode上から実行するために使うよ - C/C++
基本的にこれがあれば、補完とエラーチェックは十分 - CodeLLDB
VSCode上でのデバッグをしやすくするための拡張
これらは普通に拡張機能のところでインストールできます
- Command + k,sで設定画面を開く
- 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",
},
]
Code->Preferences->Settings
上部の・・・をクリックして、settings.jsonを開く
何も考えずに以下をコピペ(ここでは、~/sh/cpp.sh
にスクリプトを入れることを想定してるので、)
{
"C_Cpp.default.cppStandard": "c++14”,
"runner.languageMap": {
"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
が実行され、内部で以下が順に実行される
- サンプルケースのダウンロード
- コンパイル
- 全サンプルの実行及び判定
手動をしたい場合やデバッグをしたいとき
-
debug.cpp
のinclude部分にコンパイル実行したいcppファイルのパスを書く -
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.
- デバッグ実行
画面左部の、上から4番目の虫アイコン(デバッグ)を選択
緑三角の再生ボタンを押すとデバッグ開始
標準入力と標準出力は、画面下部のTERMINAL
タブで実行可能(デバッグ開始時はDEBUG CONSOLE
タブが開かれてるのでTERMINALタブの選択が必要)
ブレークポイントを設定すると、その時点での各変数の中身が左側のペインで確認できるので、printfデバッグは基本的に不要です
Runnerと似ている拡張機能
ここでも、cppファイルからショートカットキーでシェル呼び出すのでほぼ同じ動作を使います
決定的に異なるのは、出力(実行)にvscodeのterminalを使用でき,標準入力も扱えるようになる点(Runnerはoutput only)
- install
- Code->Preferences->Extensions->{}マーク (Open Settings (JSON))
- 以下のように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実行
}
- Code->Preferences->Keyboard Shortcuts
- 次のキーバインドを変更
"extension.runner.start" : "sft+cmd+;"
"extension.runner.stop" : "sft+cmd+'"
"code-runner.runCustomCommand" : "sft+cmd+,"
"code-runner.run" : "sft+cmd+."