条件语句中使用到了三个关键字:“ifeq”、“else”和“endif”。其中:函数
1. “ifeq”表示条件语句的开始,并指定了一个比较条件(相等)。以后是用圆括号括包围的、使用逗号“,”分割的两个参数,和关键字“ifeq”用空格分开。参数中的变量引用在进行变量值比较时被展开。“ifeq”以后就是当条件知足make须要执行的,条件不知足时忽略。spa
2. “else”以后就是当条件不知足时的执行部分。不是全部的条件语句都须要此部分。ip
3. “endif”表示一个条件语句的结束,任何一个条件表达式都必须以“endif”结束。变量
此关键字用来判断参数是否相等,格式以下:file
`ifeq (ARG1, ARG2)'引用
`ifeq 'ARG1' 'ARG2''di
`ifeq "ARG1" "ARG2"'make
`ifeq "ARG1" 'ARG2''字符
`ifeq 'ARG1' "ARG2"'替换展开“ARG1”和“ARG1”后,对它们的值进行比较分割
一般咱们会使用它来判断一个变量的值是否为空(不是任何字符)。参数值多是经过引用变量或者函数获得的,于是在展开过程当中可能形成参数值中包含空字符(空格等)。通常在这种状况时咱们使用make的“strip”函数来对它变量的值进行处理,去掉其中的空字符。格式为:
ifeq ($(strip $(foo)),)
TEXT-IF-EMPTY
endif
即就是在“$(foo)”中存在若干前导和结尾空格,“TEXT-IF-EMPTY”也会被做为Makefile须要执行的一部分。
关键字“ifneq”实现的条件判断语句和“ifeq”相反
关键字“ifdef”
关键字“ifdef”用来判断一个变量是否已经定义。格式为:
`ifdef VARIABLE-NAME'
若是变量“VAEIABLE_NAME”的值非空(在Makefile中没有定义的变量的值为空),那么表达式为真
例1:
bar =
foo = $(bar)
ifdef foo
frobozz = yes
else
frobozz = no
endif
例2:
foo =
ifdef foo
frobozz = yes
else
frobozz = no
endif
例1中的结果是:“frobozz = yes”;而例2的结果是:“frobozz = no”。
关键字“ifndef”实现的功能和“ifdef”相反