1.判断是否相等
ifeq 条件语句
条件成立时要做的事情
endif
或者
ifeq 条件语句
条件成立时要做的事情
else
条件不成立时要做的事情
endif
其中“条件语句”可以有几种形式:
判断参数”arg1”与”arg2”的值是否相等:
ifeq (arg1,arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
判断参数”arg1”与”arg2”的值是否不相等:
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
条件语句也可以make函数,例如使用“strip”函数判断函数是否返回空:
ifeq ($(strip $(foo)),)
#TODO
endif
2.判断变量值是否非空
语法:
ifdef var
#TODO
else
#TODO
endif
同理也有ifndef的形式:
ifndef var
#TODO
else
#TODO
endif
注意:
以上条件判断语句类似于编程语言中if的条件判断,不同的是,在Makefile中,以上条件判断中,一组条件判断最多只能有一个else语句,没有else if语句,而编程语言中可以有任意多个else if语句,在makef中,可以通过多次嵌套实现else if的同样效果。如:
ifeq 条件1
#TODO
else
if 条件2
#TODO
else
#TODO
endif
endif
另外需要注意的是,make是在读取Makefile时就计算条件表达式的值,并根据条件表达式的值来选择语句,所以,不要把自动化变量(如“$@”等)放入条件表达式中,因为自动化变量是在运行时才有的。