使用条件判断,可以让make工具根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值、比较变量及常量。
一、条件表达式
语法如下:
<conditional-directive>
<text-if-true>
endif
或者
<conditional-directive>
<text-if-true>
else
<text-if-flase>
endif
其中,<conditional-directive>表示条件关键字。条件关键字有4个,下面分别介绍:
1. ifeq
ifeq关键字表示如果相等则执行,格式如下:
ifeq (<arg1>, <arg2>)
ifeq '<arg1>' '<arg2>'
ifeq "<arg1>" "<arg2>"
该关键字比较arg1和arg2的值是否相等,如果相同,则表达式为真。
2.ifneq
ifneq关键字表示如果不相等则执行,格式如上。
3.ifdef
ifdef关键字表示如果值非空则执行,格式如下:
ifdef <variable-name>
ifdef关键字判断<variable-name>的值。如果非空则表达式为真,ifdef只是测试一个变量是否有值,并不会把变量扩展到当前位置。
4.ifndef
ifndef关键字表示如果值为空则执行,其格式如下:
ifndef <variable-name>
下面演示条件表达式:
var1 = #这里是一个空值
var2 = hello
all :
ifdef $var1 #判断var1是否定义
echo "var1 is defined"
else
echo "var1 is undefined"
endif
ifeq ($(var1) , $(var2)) #判断var1和var2的值
echo "they are equal"
else
echo "they are not equal"
endif
.PHONY : all
执行结果: