tech.chakapoko.com
Home / GNU Make

[GNU Make]Makefileでの変数定義

変数

GNU make には 2 種類の変数があります。

  1. Recursively expanded variable
  2. 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