栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

条件判断语句

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

条件判断语句

makefile 中支持条件判断语句

可以根据条件的值来决定 make 的执行

可以比较两个不同变量或者变量和常量值

ifxxx (arg1, arg2)

# for true

else

# for false

endif

注意事项

条件判断语句只能用于控制 make 实际执行的语句;但是,不能控制规则中命令的执行过程。

条件判断语句的语法说明

常用形式

ifxxx (arg1,arg2)

其他合法形式

ifxxx "arg1" "arg2"ifxxx 'arg1' 'arg2'ifxxx "arg1" 'arg2'ifxxx 'arg1' "arg2"

条件判断关键字 

条件判断语句初探 

makefile

.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 "var2 is not empty"
    endif

执行结果如下所示:

一些工程经验 

条件判断语句之前可以有空格,但不能有 Tab 字符 ('t')

在条件语句中不要使用自动变量 ($@,$^,$<)

一条完整的条件语句必须位于同一个 makefile 中

条件判断类似于 C 语言中的宏,预处理阶段有效,执行阶段无效

make 在加载 makefile 时

首先计算表达式的值 (赋值方式不同,计算方式不同)根据判断语句的表达式决定执行的内容

下面的输出相同吗?

输出不相同。

深入 make 行为 

makefile

.PHONY : test
var1 := 
var2 := $(var1)

var3 =
var4 = $(var3)

#var3 = 3

test :
    ifdef var1
		@echo "var1 is define"
    else
		@echo "var1 is not define"
    endif

    ifdef var2
		@echo "var2 is define"
    else
		@echo "var2 is not define"
    endif

    ifdef var3
		@echo "var3 is define"
    else
		@echo "var3 is not define"
    endif

    ifdef var4
		@echo "var4 is define"
		@echo "var4 => $(var4)"
    else
		@echo "var4 is not define"
    endif

执行结果如下所示:

当前 makefile 存在 4 个变量,var1 和 var2 为简单赋值,make 在加载 makefile 时就知道它们的值,而 var3 和 var4 为递归赋值,var3 为空,var4 的值是动态变化的,随着 var3 的变化而变化,所以  make 在加载 makefile 时不知道 var4 是否有值,所以就默认认为 var4 有值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号