tasks.jsonとlaunch.json
一言でいうと
tasks.json 「やってほしい作業」を登録する場所(ビルド、テスト、クリーンなどなど)
launch.json 「デバッグ実行」のやり方を登録する場所
例えでいうと
tasks.json 料理のレシピ集(カレーの作り方、サラダの作り方などが書いてる)
launch.json 注文書(カレー食べたい、レシピ集のカレーの作り方通りに作って)
code:tasks.json(レシピ集)
{
"label": "make build", // ← レシピの名前
"command": "make", // ← 実行するコマンド
"options": {
"cwd": "${workspaceFolder}/Duskul1.4/src" // ← どこで実行するか
}
}
これは「make build というレシピ:Duskul1.4/src フォルダで make コマンドを実行する」って書いてある。
make コマンドは、その中の Makefile を読んで C言語のソースをコンパイル → dusk 実行ファイルを作る。
code:launch.json
{
"name": "(lldb) dusk - 開いてるファイル", // ← この設定の名前
"type": "cppdbg", // ← どのデバッガ使うか(C/C++用)
"program": "${workspaceFolder}/Duskul1.4/src/dusk", // ← 何を実行するか
"cwd": "${workspaceFolder}/Duskul1.4/src", // ← どこで実行するか
"preLaunchTask": "make build", // ★ 実行前にこれをやれ ★
"MIMode": "lldb" // ← lldbっていうデバッガを使う
}
ポイントは preLaunchTask: "make build"。
これが「デバッグ開始する前に、まず tasks.json の make build レシピを実行してね」という指示。
code:実行流れ
↓
「(lldb) dusk - 開いてるファイル」設定を実行
↓
↓
「make build」を探して実行
↓
↓
引数:今エディタで開いてる .dus ファイル
↓