変数
GNU make には 2 種類の変数があります。
- Recursively expanded variable
- Simply expanded variables
Recursively expanded variable
=
もしくは define
で定義する変数です。
この変数がは他の変数を参照している場合、変数が利用される時点で展開されます。
foo = Foo
foo1 = $(foo)
foo2 = $(foo1)
foo = Foo1
all:
@echo $(foo2)
この Makefile を実行すると @echo
を実行した時点で foo の値は Foo1 なので Foo1 と表示されます。
$ make
Foo1
Simply expanded variables
:=
で定義する変数です。
この変数は定義した時点で展開されます。他の多くのプログラミング言語と似た動きをします。
foo := Foo
foo1 := $(foo)
foo2 := $(foo1)
foo := Foo1
all:
@echo $(foo2)
$ make
Foo