条件判断语句

来源:互联网 发布:opencv icp算法代码 编辑:程序博客网 时间:2024/05/21 17:29

1 makefile中支持条件判断语句

  • 可以根据条件的值来决定make的执行
  • 可以比较两个不同变量或者变量和常量值

这里写图片描述

  • 注意事项
    • 条件判断语句只能控制make实际执行的语句,但是不能控制规则中命令的执行过程

2 条件判断语句的语法说明

  • 常用形式

    • ifxxx (arg1,arg2)
  • 其它合法形式

    • ifxxx “arg1” “arg2”
    • ifxxx ‘arg1’ ‘arg2’
    • ifxxx ‘arg1’ “arg2”
    • ifxxx “arg1” ‘arg2’

这里写图片描述

  • 条件判断关键字

这里写图片描述

编程实验:条件判断语句初探

.PHONY : testvar1 := Avar2 := $(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输出结果:var1 == var2var2 is NOT emptyvar2 is NOT emptyvar3 is empty

3 一些工程经验

  • 条件判断语句之前可以有空格,但不能Tab字符(’\t’)
  • 在条件语句中不要使用自动变量($@, $^, $<)
  • 一条完整的语句必须位于同一个makefile中
  • 条件判断类似C语言的宏,预处理阶段有效,执行阶段无效
  • make在加载makefile时
    • 首先计算表达式的值(赋值方式不同,计算方式不同)
    • 根据判断语句的表达式决定执行的内容

下面的代码执行结果相同吗?

这里写图片描述

编程实验:make行为

.PHONY : testvar1 :=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输出结果:var1 is NOT definedvar2 is NOT definedvar3 is NOT definedvar4 is defined由于条件语句是在make加载makefile时进行处理的,所以当变量进行递归赋值的时候,处理到条件判断语句时,无法确定在之后的语句中是否改变了变量的值,所以make认为此变量非空。在make完成对makefile的预处理后,所有变量的值都是确定的。但是,在本例中如果判断var3和var4的值是否相等,却有一个与之矛盾的结果,输出结果为相同。按理说一个非空,一个空应该不相等才是?

4 小结

  • 条件判断根据条件的值来决定make的执行
  • 条件判断可以比较两个不同的变量或者变量和常量值
  • 条件判断在预处理阶段有效,在执行阶段无效
  • 条件判断不能控制规则中命令的执行过程

修改记录


时间 动作 2017.7.16 首次上传

参考资料


唐老师 — 狄泰软件学院 — 十二月提升计划

原创粉丝点击