重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Makefile中支持条件判断语句,可以直接比较两个不同变量的值和常量值。
注意:条件判断语句只能用于控制make实际执行的语句,不能控制规则中命令的执行过程。
条件判读语法说明:
条件判断关键字:
示例:
创新互联网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、网站制作、网站建设易于使用并且具有良好的响应性。
.PHONY : test
var1 := A
var2 := $(var1)
var3 :=
test:
ifeq ($(var1),$(var2))
@echo "var1 == var2"
else
@echo "var1 != var2"
endif
ifneq ($(var2),)
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifdef var2
@echo "var2 is NOT empty"
else
@echo "var2 is empty"
endif
ifndef var3
@echo "var3 is empty"
else
@echo "var3 is NOT empty"
endif
输出结果:
1.条件判断语句之前可有有空格,但不能有Tab字符(‘\t’)
2.在条件语句中不要使用自动变量( $@ $^ @<)
3.一条完整的条件语句必须位于同一个Makefile中
4.条件判断类似C语言中的宏,预处理阶段有效,执行阶段无效
5.Make在加载Makefile时,首先计算表达式的值(赋值方式不同,计算方式不同),根据判断语句单纯表达式决定执行的内容。
问题,下面Makefile执行后是否相同??
答案:不同,前者的赋值方式可以做在make加载Makefile时判断出变量是否定义,而后者无法做出判断。
示例:
.PHONY : test
var1 :=
var2 := $(var1)
var3 =
var4 = $(var3)
#var3 = 3
test:
ifdef var1
@echo "var1 is defined"
else
@echo "var1 is NOT defined"
endif
ifdef var2
@echo "var2 is defined"
else
@echo "var2 is NOT defined"
endif
ifdef var3
@echo "var3 is defined"
else
@echo "var3 is NOT defined"
endif
ifdef var4
@echo "var4 is defined"
else
@echo "var4 is NOT defined"
endif
输出结果: