在GNU make中,变量的定义有两种方式,递归展开式变量和直接展开式变量。
两种变量的不同主要体现在两个方面:1. 定义方式 ; 2.展开时机。
详细的介绍和例子演示可以查阅 GNU Makefile.pdf chapter 6.2.
递归展开式变量:
1. 定义方式为 =
foo=$(bar)
bar=$(ugh)
ugh=Huh?
all: ;echo $(bar)
2.变量可以引用在其后面定义的变量,因为递归式变量的展开是在执行的时候,也就是在echo $(bar) 这个命令执行的时候才会对$(bar)进行展开。
直接展开式变量
1. 定义方式为 :=
x := foo
y := $(x) bar
x: = later
2. 变量是在定义的时候就直接进行展开,因此y变量就是等于foo bar.
Over.