nvm(Node Version Manager)を使う

2 Mins read

atcoder-cliを使いたくて、少々回り道をしながらもインストール手順を残しておきます

homebrewを使ってgccをインストールします

$ brew install gcc
$ ln -s /usr/local/bin/gcc-11 /usr/local/bin/gcc
$ ln -s /usr/local/bin/g++-11 /usr/local/bin/g++
$ gcc -v
$ g++ -v</code></pre>

上記は、2021年9月時点での情報です。バージョンがどんどんと上がるはずですので、
ls /usr/loca/bin/ | grep gcc
などとして正確なバージョンを把握して下さい

また、gcc -vとしたときに、apple clangが呼ばれていたらシンボリックリンクがうまくいっていないか、優先順位がうまくいっていない可能性があるため、以下をやってみます

$ echo 'export PATH=$PATH:/usr/local/bin' >> ~/.zshrc

続いて、python, nvmをインストール

$ brew install python3
$ brew install nvm
$ source $(brew --prefix nvm)/nvm.sh
$ echo 'source $(brew --prefix nvm)/nvm.sh' >> ~/.zshrc
$ nvm -v

バージョンが表示されればOKです。

$ nvm install --lts --latest-npm
$ nvm alias default 'lts/*'
$ node -v

ここまできたら、あとは粛々とインストール

$ npm install -g atcoder-cli
$ pip3 install online-judge-tools
$ acc -v
$ oj --version
$ acc check-oj

これで終わり。ログインします

$ acc login
? username: (入力します)
? password: &#91;hidden](入力します)
OK
$acc session

表示されれば、ログインできています

$ acc config default-task-choice all
# すべてとってくる設定
$ cd `acc config-dir`
# 上記実際には、/Users/(ユーザー名)/Library/Preferences/atcoder-cli-nodejs となっています

$ mkdir cpp
$ touch cpp/main.cpp
$ vim cpp/template.json

以下のjsonファイルを作成します。

{                       
  "task":{
    "program": &#91;"main.cpp"],
    "submit": "main.cpp"
  }
}

確認して、c++を基本にしてしまいます

$ acc templates
$ acc config default-template cpp

いよいよVSCodeの設定

VSCodeを起動して、新しいフォルダーを開きます。もしくは、今回対象とするフォルダで、$ code .として開きます

command+ Shift + Pから、settings と入力して、ワークスペースの設定を開きます

command + Shift + B で、task.jsonを新規作成します

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "-o",
                "${workspaceFolder}/main",
                "${workspaceFolder}/main.cpp"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

利用方法

VSCのターミナルを開いて

$ acc new abc213(コンテンスト名)

これで指定コンテストを実行するに必要となる一連のファイルがダウンロードされます。