5
2

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.

C言語、C++をVSCodeの拡張機能Code Runnerでワンクリックでコンパイルして実行する方法

Last updated at Posted at 2023-10-24

環境構築

今回はVisual Studio Codeの拡張機能であるCode Runnerを用いてワンクリック、ワンショートカットでコンパイルと実行を行い、快適にC言語/C++を実行できる環境を構築していきたいと思います。

  • Visual Studioだと高機能すぎて使いこなせない
  • シンプルなVSCodeで記述してボタンひとつで実行したい
    という方の参考になればと思います。
  • プログラミング初心者向けです。

注意事項
当方はプログラミング、ITに疎い初心者であるためネットで調べて環境構築ができたよという内容をまとめた記事になります。
もし間違っていたり、補足が必要な場合はぜひ編集リクエストやコメントを頂ければと思います。

VSCodeはVisual Studio Codeはマイクロソフトが提供するシンプルなエディターです。拡張機能が簡単にインストールできるので自分好みにカスタマイズすることもできるらしいです。
※僕は使いこなせていません。

メモ帳は間違っているところを教えてくれたり、自動で字下げしてくれたりはしませんのでエディターがあったほうがやりやすいかと思います。

他にもSublime Text、Visual Studio 2022、Vimなどがあるようです。

Visual Studioはコンパイラを単独でインストールしなくてもC言語/C++を実行できるIDE(統合開発環境)ですが高機能すぎて僕は扱えておりません。こいついきなりソリューションとかプロジェクトとかコンソールアプリとか選ばせてくるので慣れるまでは敷居が高い(誤用)テキストエディタ―かなと思います。

VSCodeの方は直観的な操作だけで最低限扱えると思います。

なにはともあれここではVSCodeをインストールしてください。

VSCodeのインストールに関しては省略します。
インストールに関してはこちらを参照してください。
検索すれば出てくると思いますがVSCodeからダウンロードできます。

MinGWのインストール

MinGW は簡単に言うと, Windows で使える GCC(コマンドラインから使える gcc, g++, gfortran などのGNU コンパイラコレクション)です。
引用元:https://home.hirosaki-u.ac.jp/heroic-2020/windows/mingw/

詳しいことはわかりませんが、MinGWというのはWindowsに移植されたgcc、g++コマンドを使うためのツールなんですかね?

Code RunnerはVSCode上でワンクリックでコンパイルと実行を行えるようにするために使います。

MinGWがあればVSCode、Code-RunnerがなくてもWindows標準のコマンドプロンプトなどのソフトウェアでC言語、C++をコンパイル、実行できます。
それに関しては前回の記事で環境構築しているのでそちらをご覧ください。

注意事項
前回の競技プログラミングを始める記事でインストールしたMinGWは32bit環境向けのものらしく今回の記事でインストールするMinGW-w64は64bit環境向けのもののようです。

※どちらも僕のWindows10 64bit環境では動作しております。

それではMinGW-w64をインストールしていきたいと思います。

MinGW-w64のインストールに関してはMinGW-w64のダウンロードとインストールを参照しました。

  • まず、このサイトRelease 12.2.0-rt_v10-rev0を探してください。

  • 次にx86_64-12.2.0-release-win32-seh-rt_v10-rev0.7zをダウンロードしてください。
    ※Assetsが開いていなければクリックして開いてください。

image.png

.7zが解凍できない場合は7-zipという解凍ソフトをインストールしてください。

  • ダウンロードできたら中身をCドライブ直下などに配置します。エクスプローラー、つまり標準ファイルソフトを開いてローカルディスク(C:)を開いた場所に解凍します。
    ※必ずしもCドライブ直下でなくてもよいと思います。

  • 解凍して配置できたらWin+Iキーなどで設定を開きます。環境変数と検索して環境変数を編集>>Path>>新規>>C:\mingw64\binと入力してOKを押して閉じます。

C:\mingw64\binはmingw64フォルダの中のbinフォルダの位置を表すアドレスです。Cドライブ直下以外に配置した場合はそのアドレスを入力してください。
エクスプローラーなどの上の部分を右クリックするとアドレスをコピーできます。
image.png

僕はユーザー環境変数にpathを通していますが、システム環境変数でも参照したサイトを見る限りでは問題ないようです。

これを見る限りではユーザー環境変数はログインしているユーザーに対応するものでシステム環境変数はどのユーザーでもそのコンピューターを使っている限り使えるものということでしょうか。

※MinGWは2つもいらないので他にもMinGWをインストールしている人は片方のpathを削除しておくとよいと思います。

  • これでコマンドプロンプトなどを開いてgcc -vと入力すればバージョンが表示されると思います。

  • あとはCode Runnnerの設定を行っていきます。

コマンドプロンプトはWindows+Rキー>>cmdと入力してEnterを押せば開けます。

Code Runnerのインストールと設定

  • VSCodeを起動したら左のツールバーにある拡張機能を開いてCode Runnerと検索しインストールします。
    C/C++という拡張機能が必要だったかどうかわかりませんが、とりあえずインストールしておくと良いと思います。
    image.png
    次に歯車の設定を押して拡張機能の設定を行います。
    image.png
  • Run In Terminalにチェックを入れます。
    image.png
    チェックを入れておかないとscanf関数などの入力を行うことができなくなるようです。
  • Executor Mapのsettings.jsonで編集をクリック
    image.png
    settings.jsonを開いたらsettings.jsonのバックアップをとっておくとよいと思います。コードの中身をわけもわからずいじるのでバックアップしておくことを推奨します。

デフォルトのソースコードを貼っておきます。
※一度も実行したことがないとこのソースが書かれていないかもしれません。

Code-runner settings.json
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": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"c"、"cpp"と書かれている部分を以下のように変更します。
変更したらCtrl+Sなどで上書き保存してください。

変更後
"c": "cd $dir && gcc --exec-charset=cp932 $fileName -o $fileNameWithoutExt && chcp 932 | Out-Null && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ --exec-charset=cp932 $fileName -o $fileNameWithoutExt && chcp 932 | Out-Null && $dir$fileNameWithoutExt",

コマンドプロンプトでchcp 65001と入力すると文字コードがutf-8に変更されるように、今回は932なのでshift-jisコードを設定しているのだと思われます。

補足ですがVSCodeはデフォルトのエンコードがUTF-8になっているためターミナルで日本語の文章を出力すると文字化けします。
※あくまでC言語、mingw環境の話です。

Code Runnerを使わずにVSCodeのターミナル、コマンドプロンプトなどでCを実行する場合はデフォルトのエンコードをshift-jisに変更するかターミナルにchcp 65001と入力してから実行すれば文字化けせずに日本語を入力できると思います。

初心者の教訓として日本語をどっかから持ってきてコピペすると文字コードの違いで文字化けすることがあります。

注意事項
当方はプログラミング、ITに疎い初心者であるためネットで調べた知識にすぎません。間違いや誤解をまねくような表現があればご教授いただければ幸いです。

Code Runnerの設定が終われば後は簡単です。

いざ実行

  • 以下のような適当なソースコードをコピペするかつくって拡張子.cもしくは.cppのファイルをつくります。
#include <stdio.h>
int main(void){
    printf("こんにちは\n");
    return 0;
}
  • VSCodeで開きます
  • VSCodeの右上にある三角を押せばワンクリックでコンパイルから実行までを自動で行ってくれます。
    ※Code Runnerで実行できていないときがあるので写真右上の赤い丸のところからRun Codeを選んでください。一度選べば今後は選ばなくてよいはずです。
    image.png

実行できればVSCodeの下に「こんにちは」が表示されると思います。

PS C:> cd "c:" ; if ($?) { gcc --exec-charset=cp932 test.c -o test } ; if ($?) { chcp 932 | Out-Null } ; if ($?) { .\test }
こんにちは

できた!!

Code-RunnerはCtrl+Alt+Nというショートカットキーひとつで実行することもできます。

ソースを変更して上書き保存し、実行するとターミナルに直接数値を入力できます。

#include <stdio.h>
int main(void){
    int a;
    printf("こんにちは,整数を入力してください。\n");
    scanf("%d",&a);
    if (a <= 100 && a >= 0) printf("入力された数値は0以上100以下です。\n");
    else printf("入力された数値は範囲外です。");
    return 0;
}
こんにちは,整数を入力してください。
0
入力された数値は0以上100以下です。
こんにちは,整数を入力してください。
203
入力された数値は範囲外です。

このように出力されると思います。

※コードを書き換えた時は上書き保存してから実行してください。

最後まで読んでいただきありがとうございました。
いいね、コメント等いただけると幸いです。

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?