分类: LINUX
2011-08-23 13:50:41
可以为某个目标设置局部变量,这种变量被称为“Target-specific Variable”,它可以和“全局变量”同名,因为它的作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。
其语法是:
prog : CFLAGS = -g
prog : prog.o foo.o bar.o
$(CC) $(CFLAGS) prog.o foo.o bar.o
在这个示例中,不管全局的$(CFLAGS)的值是什么,在prog目标,以及其所引发的所有规则中(prog.o foo.o bar.o的规则),$(CFLAGS)的值都是“-g”
条件表达式的语法为:
endif
以及:
else
endif
其中
第一个是我们前面所见过的“ifeq”
ifeq (
ifeq '
ifeq "
ifeq "
ifeq '
比较参数“arg1”和“arg2”的值是否相同。当然,参数中我们还可以使用make的函数。如:
ifeq ($(strip $(foo)),)
endif
这个示例中使用了“strip”函数,如果这个函数的返回值是空(Empty),那么
第二个条件关键字是“ifneq”。语法是:其比较参数“arg1”和“arg2”的值是否相同,如果不同,则为真。和“ifeq”类似。
第三个条件关键字是“ifdef”。语法是:
ifdef
如果变量
示例一:
bar =
foo = $(bar)
ifdef foo
frobozz = yes
else
frobozz = no
endif
示例二:
foo =
ifdef foo
frobozz = yes
else
frobozz = no
endif
第一个例子中,“$(frobozz)”值是“yes”,第二个则是“no”
第四个条件关键字是“ifndef”。其语法是:
ifndef
这个我就不多说了,和“ifdef”是相反的意思。