makefile-03-条件判断

8.条件判断语句http://blog.51cto.com/11134889/2108167

8.1.语法规则

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

输出结果:

8.2.工程经验

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

输出结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值