8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VSCodeのCode Runnerで実行のオプションをつける(実行ファイル名をa.out、a.exeに変更したい)

Last updated at Posted at 2021-04-02

2021/04/02投稿

※最新版はharoot.netに移動しました。

はじめに

初心者向けです。

VSCode(Visual Studio Code):ソースコードエディタの一つ。拡張機能が豊富。
Code Runner:VSCodeの拡張機能の一つ。VSCodeの画面上で簡単にコンパイルと実行が行えるようになる。

背景

VSCodeで実行を簡単にするためにCode Runnerを導入しましたが、
Code Runnerは実行ボタンを押すとデフォルトでは、実行ファイル名はa.outa.exeではなくファイル名から拡張子を抜いたものになります。

例えば HelloWorld.cpp を実行すると、 HelloWorld という実行ファイルが生成されます。
個人的にはソースファイルごとに実行ファイルがあるとフォルダがごちゃごちゃして嫌なので、実行ファイルは全て名前をa.out(Windowsならa.exe)に変更して毎回上書きしたいです。
なので今回はCode Runnerの実行オプションの変更を行います。

環境

macOS Big Sur 11.2.1
Visual Studio Code 1.55.0
Code Runner 0.11.3

手順

VSCodeの設定(拡張機能含む)はsettings.jsonというファイルで行います。

※別の拡張機能で日本語対応(Japanese Language Pack for Visual Studio Code)にしてるので英語の人は適宜読み替えてください
※Windowsの方はa.outの記述は全てa.exeで読み替えてください。

settings.jsonを開く

settings.jsonの開き方は何種類かあるので何でも良いですが、とりあえずリンクから開く方法を説明します。
VSCodeを開き、左下の歯車のアイコン(管理)をクリックし、設定を選びます。
開かれた膨大な設定の中から、settings.jsonで編集 と書かれたリンクを開けば完了です。
…ただリンクを探すのがやや面倒で、上の検索欄にemmetなりsettingsなり入力すればそのリンクが出てくると思います。
スクリーンショット 2021-04-02 1.52.10.png

jsonファイルの仕様

ここで少しだけ.jsonについて説明します。編集していてエラーになる時は参照してください。

拡張子がjsonのファイルは一行目の{と最終行の}の間に設定を記述します。
基本的な書き方は"変数名":"値"です。また要素はそれぞれカンマで区切る必要があり、最後の要素にはカンマは要りません。
例えば、

nantoka.json
{
  "name":"haru",
  "qiita":"@haru8601",
  "age":21
}

ここでは変数名も自分で書きましたがsettings.jsonで使う変数名は基本的に与えられるので右側の値だけ書き換えれば良いです。

settings.jsonの編集

本題に戻ります。

Code Runnerでの実行オプションを決める変数名はcode-runner.executorMapです。
settings.jsonが開けたら、
一行目の{と、最終行の}の間のどこかにcode-runner.executorMapと打ち始めてください。入力してる途中で候補に出てくると思うのでそれを選択してください。
※要素の前後にカンマを付け忘れるとエラーになるので注意してください

候補からcode-runner.executorMapを選択すると以下のような書き込みがされると思います。

settings.json
    "code-runner.executorMap": {
        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    },

ここにはそれぞれの言語と、実行ボタンを押したときに行われるコマンドが表示されています。
例えばc++の場合、"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"と書いてあるので、
c++のファイルで実行ボタンを押すと、

  1. $dir(作業しているディレクトリ)に移動して、
  2. $fileName(作業しているファイル名)をコンパイルして$fileNameWithoutExt(ファイル名から拡張子を抜いた名前)の実行ファイルを生成し、
  3. $dir$fileNameWithoutExt(作業ディレクトリ内の実行ファイル)を実行します。

今回はファイル名でなくa.outを使うので、
2.で生成される実行ファイル名をa.outにし、3.での実行ファイル名もa.outにします。

settings.json
"cpp": "cd $dir && g++ $fileName -o a.out && ./a.out",

もちろんc++以外も同様です。
実行はa.outだけでなく./(カレントディレクトリパス)も必要なことに注意してください。

これでファイルを実行してフォルダにa.outが生成されていれば完了です。他の実行ファイルは消しちゃいましょう。

参考文献

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?