捌 -《条件判断语句》
makefile 中反对条件判断语句
- 能够依据条件的值来决定 make 的执行
- 能够 比拟 两个不同变量或者变量和常量值
ifxxx(arg1,arg2)
#for ture
else
#for false
endif
注意事项
条件判断语句只能用于管制 make 理论执行的语句,然而不能管制规定中命令的执行过程
条件判断语句的语法阐明
- 罕用模式
ifxxx(arg1,arg2)
- 其它非法模式
ifxxx "arg1""arg2"ifxxx'arg1''arg2'
ifxxx "arg1"'agr2'ifxxx'arg1'"arg2"
小贴士
条件判断关键字
编程试验 1
.PHONY : test
var1 := A
var2 := $(var1)
var3 :=
test :
ifeq ($(var1),$(var2))
@echo "var1 == var2"
else
@echo "var1 != var2"
endif
ifeq ($(var2),$(var3))
@echo "var2 == var3"
else
@echo "var2 != var3"
endif
ifdef var3
@echo "var3 is NOT empty"
else
@echo "var3 is empty"
endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入
var1 == var2
var2 != var3
var3 is empty
这里格局要留神,不然会报相似这样的谬误
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
makefile:24: *** extraneous 'else'. Stop.
一些工程教训 1
- 条件判断语句之前能够有空格,然而不能有 Tab(‘t’)
- 在条件语句中不要应用主动变量($@, $^,$<)
- 一条残缺的条件语句必须位于同一个 makefile 中
一些工程教训 2
- 条件判断相似 C 语言中的宏,预处理阶段无效,执行阶段有效
-
make 在加载 makefile 时
- 首先计算表达式的值 ( 赋值形式不同,计算形式不同)
- 依据判断语句的示意式决定执行的内容
编程试验 2.1
.PHONY : test
var1 :=
var2 := $(var1)
var3 =
var4 = $(var3)
# makefile 预处理阶段是无奈通晓 var4 是否有值,就认为有值了
test :
ifdef var1
@echo "var1 is NOT empty"
else
@echo "var1 is empty"
endif
ifdef var2
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifdef var3
@echo "var3 is NOT empty"
else
@echo "var3 is empty"
endif
ifdef var4
@echo "var4 is NOT empty"
else
@echo "var4 is empty"
endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入
var1 is empty
var2 is empty
var3 is empty
var4 is NOT empty
编程试验 2.2
.PHONY : test
var1 :=
var2 := $(var1)
var3 =
var4 = $(var3)
# makefile 预处理阶段是无奈通晓 var4 是否有值,就认为有值了
var3 = 3
test :
ifdef var1
@echo "var1 is NOT empty"
else
@echo "var1 is empty"
endif
ifdef var2
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifdef var3
@echo "var3 is NOT empty"
else
@echo "var3 is empty"
endif
ifdef var4
@echo "var4 is NOT empty"
else
@echo "var4 is empty"
endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入
var1 is empty
var2 is empty
var3 is NOT empty
var4 is NOT empty
小结
- 条件判断依据条件的值来决定 make 的执行
- 条件判断能够比拟两个不同变量或者变量和常量值
- 条件判断在预处理阶段无效,执行阶段有效
- 条件判断不能管制命令规定中的执行过程