$@がターゲットと一致しないケース

久しぶりに地味なエントリを。

Makefileのルール内で$@はそのターゲットをあらわします。

TARGET = foo
$(TARGET):
    @echo $(TARGET)
    @echo $@

実行:
$ make
foo
foo

なんですが、Target-specific Variable Valuesを使うと、$@とターゲットが一致しない場合があるようです。

FOO = foo
TARGET = $(FOO)

$(TARGET): FOO = bar
$(TARGET):
    @echo $(TARGET)
    @echo $@

実行:
$ make
bar
foo