一度実行した結果を参照するには?
Makefile内でshellを使ってコマンド実行結果を変数に格納したいとき、=
ではうまくいかない。
格納されたコマンドが参照都度実行され、実行都度結果の異なるコマンドの場合意図した結果を得られない。
一度だけ評価するには:=
を使う。
=
で評価した場合
1 2 3 4 5 6 7 8 9 10 11
| TIME = $(shell date "+%H:%M:%S")
do: test1 test2
test1: echo $(TIME) sleep 2
test2: echo $(TIME) sleep 2
|
1 2 3 4 5 6 7
| $make echo 15:47:08 15:47:08 sleep 2 echo 15:47:10 15:47:10 sleep 2
|
:=
で評価した場合
1 2 3 4 5 6 7 8 9 10 11
| TIME := $(shell date "+%H:%M:%S")
do: test1 test2
test1: echo $(TIME) sleep 2
test2: echo $(TIME) sleep 2
|
1 2 3 4 5 6 7
| $make echo 15:48:05 15:48:05 sleep 2 echo 15:48:05 15:48:05 sleep 2
|