文章目录 前言一、条件判断语句的语法说明二、ifeq / ifneq三、ifdef / ifndef代码讲解: 四、经典示例总结 前言 一、条件判断语句的语法说明 makefi
比较
两个不同变量或者变量和常量值。条件判断语句只能用于控制 make 实际执行的语句;但是,不能控制规则中命令的执行过程。
注意:
中间不可以有空格。
是否相等
,相等为 true, 否则是 false.是否不等
,不等为 true, 否则为 false.ifeq (arg1,arg2) # 如果 arg1 等于 arg2,则执行这里的命令else # 否则执行这里的命令endififneq (arg1,arg2) # 如果 arg1 不等于 arg2,则执行这里的命令else # 否则执行这里的命令endif
是否有值
,有值为 true, 否则是 false.是否没有值
,没有值为 true, 否则为 false.ifdef variable # 如果 variable 被定义,则执行这里的命令else # 否则执行这里的命令endif
.PHONY : testvar1 := Avar2 := $(var1) # 将var1 赋值给 var2var3 := # var3 为空test :ifeq ($(var1),$(var2))# 判断var1 和var2 是否相等@echo "var1 == var2"else@echo "var1 != var2"endififdef var3# 判断var3 是否为空@echo "var3 is NOT empty"else@echo "var3 is empty"endif
注意:
(' \ t ')
.不要使用自动变量
。($@, $^, $<)提问 :
下面这两段代码的执行结果相同吗?
实践出真知,下面就来实际实现一下:
.PHONY : testvar1 := var2 := $(var1)# 对 var2 进行简单赋值 var3 =var4 = $(var3)# 对 var3 进行递归赋值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
结果是不同的,这是由于我们的 条件判断类似于 C 语言中的宏,预处理阶段有效,执行阶段无效。
:= 简单赋值 和 = 递归赋值 是不同的。简单赋值会发生在 Makefile 解析的过程中。简单赋值会发生在 Makefile 解析的过程中
下一篇介绍 函数的定义于调用。
来源地址:https://blog.csdn.net/wuyiyu_/article/details/130617102
--结束END--
本文标题: makefile 条件判断语句
本文链接: https://www.lsjlt.com/news/407319.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-18
2024-04-17
2024-04-11
2024-04-08
2024-04-08
2024-04-03
2024-03-15
2024-03-15
2024-03-11
2024-03-08
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0