VSCodeでCygwinのgccとmakeを使う
launcher.json と task.json を作る
tasks.json の作成
a.cを開いた状態で、「実行」→「デバッグの開始」を選択します。
ウィンドウの中央上端に「環境の選択」の選択肢が現れるので「C++ (GDB/LLDB)」を選択します。
続いて、「gcc.exe - アクティブファイルのビルドとデバッグ コンパイラ C:\cygwin64\bin\gcc.exe」を選択します。
これで .\.vscode\tasks.json
が作られます。
デバッグが始まると思いますが、とりあえずうまくいかないはずですが、無視して終了させます。
ここで、必ず終了させて下さい。たとえば、ウィンドウ中央上端のデバッガ用のボタン列の「□」をクリックする等します。終了させると、.\.vscode\launcher.json
が生成されます。
ファイルの編集
いったん実行してみる
a.c の行番号より左側をクリックするとブレークポイントになるので、ブレークポイントにしたうえで「実行」→「デバッグの開始」とするか、F5キーを押すかして、デバッガで実行してみて下さい。
Makeを使う
Makefileの作成
out.exe: a.c $(CC) -g a.c -o $@
注意するべきは、-g
オプションを付けないとブレークポイントも何も効かなくなる点です。
また、out.exe
を出力しているので launch.json
で変更が発生します。
tasks.json の編集
tasks.jsonに次を追加します。"task"へのエントリの追加です。なお、ラベルはtasks内で重複しないようにして下さい。
{ "tasks": [ { (すでに書かれている) }, { "label": "My Make", "type": "shell", "command": "C:\\cygwin64\\bin\\make.exe", "args": [], "group": "build", "options": { "cwd": "${workspaceFolder}", "env": { "PATH": "C:\\cygwin64\\bin" } } } ....
当初「"cc"が存在しない」等のエラーが出たのですが、環境変数PATH
をセットすることで対応できるようになりました。
launcher.json の編集
preLaunchTaskを変更してmakeを動かすようにする
configurations/preLaunchTask
を、"My Make
に変更します。
"configurations": [ { .... // "preLaunchTask": "C/C++: gcc.exe アクティブなファイルのビルド" "preLaunchTask": "My Make" } ]
ここの "My make"
は、task.json に記載したラベルです。
実行ファイルの設定を out.exe に変更する
これまでの設定ではa.c
でデバッガを動かすと、a.c
と同じフォルダ内のa.exe
が生成される大前提でした。
make
を使う以上、Makefile
の設定に合わせないといけません。
"configurations": [ { .... // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "program": "${workspaceFolder}\\out.exe", ... } ]
IntelliSenseの設定変更
C/C++: Edit Configurations (UI)
から、IntelliSenseの設定変更を行います。