Makefileを書いていると、$@ や $< みたいな記号や、= と := の使い分けで手が止まりがちです。この記事は変数まわりだけを逆引きでまとめたチートシートです。挙動はすべて手元の GNU Make で実行して確認しています。
もっと踏み込んだ仕様は GNU Make 4.4 日本語マニュアル 第6章「変数の使い方」 を参照してください。この記事はその逆引き版です。
= と := の違い(ここだけは押さえる)
いちばん引っかかるのがこれです。
=… 遅延展開。右辺は使うときに評価される。:=… 即時展開。右辺はその行を読んだ時点で評価される。
次の Makefile で違いが出ます。