導入
Makefile には複数のルールを書けます。では make とだけ打ったとき、どのルールが動くのでしょう? 答えは「いちばん最初に書いたターゲット(デフォルトゴール)」です。特定のルールを動かしたいときは make ターゲット名 と指定します。
説明
2つのターゲットを持つ Makefile を見てみましょう。
all:
echo "これが最初のターゲット = デフォルトゴール"
test:
echo "make test で呼ばれる"
make… 引数なしなら、先頭のallが動く(デフォルトゴール)。make test… 名前を指定すれば、そのtestが動く。make all test… 複数指定すれば、順番に動く。
慣習として、先頭には all という「全部ビルドする」ターゲットを置くことが多いです。
やってみよう
make、make test、make all test をそれぞれ試して、動くルールがどう変わるか確かめましょう。ターゲットの順番を入れ替えて make すると、デフォルトゴールが変わることも確認してみてください。
演習
run というターゲットを追加して、make run としたときだけ running... と表示されるようにしましょう(make だけのときは run が動かないこと)。
ヒント1を見る
既存のターゲットの下に run: を足し、タブ字下げで echo "running..."。
ヒント2を見る
run を先頭に置くと make だけで動いてしまいます。デフォルトゴールにしたくなければ後ろに書きます。