Logicky Blog

Logickyの開発ブログです

AtCoderをc++でやるときのWSL2環境設定メモ

参照

メモ

基本上記の通りにやったらいい感じになりました。一部自分なりの設定に変えたりした部分があったのでメモ。

コンパイルの自動化をタスク化する場合の設定例

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "c++ build for AtCoder",
      "type": "shell",
      "command": "g++",
      "args": [
        "-g",
        "-O0",
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.out"
      ],
      "options": {
        "cwd": "${fileDirname}"
      },
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

デバッグ用の launch.json の設定例

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "preLaunchTask": "c++ build for AtCoder",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}.out",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${fileDirname}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "Set Disassembly Flavor to Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

AtCoder のテスト・提出のキーボードショートカット設定

  • command-runnerというのを使うと、setting.json に下記を追記することで、コマンドが利用できるようになります。これをショートカットの設定に追加することで、ショートカットでコマンドが実行されます。
  • oj test は、コンパイルをしてから、テストするようにしました。
"command-runner.commands": {
  "oj test": "cd ${fileDirname} && g++ main.cpp -o main.out && oj test -c ${fileDirname}/main.out -d ${fileDirname}/tests",
  "acc submit": "cd ${fileDirname} && acc submit ${file}"
}

acc のコマンドのメモ

acc はこれのことです。

  • 新たに abc のディレクトリ作る
    • acc new abc123
  • 既にディレクトリあるときに問題を追加する
    • acc add

acc の設定ファイルの場所

> acc config-dir
/home/dev/.config/atcoder-cli-nodejs

> tree $(acc config-dir)
/home/dev/.config/atcoder-cli-nodejs
├── config.json
├── session.json
└── template1
    ├── main.cpp
    └── template.json