makefile中的 ifeq ifneq ifdef ifndef条件判断

feq ifneq ifdef ifndef

条件语句中使用到了三个关键字:“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”相反

相关文章
相关标签/搜索