乐趣区

关于程序员:捌条件判断语句

捌 -《条件判断语句》

makefile 中反对条件判断语句

  • 能够依据条件的值来决定 make 的执行
  • 能够 比拟 两个不同变量或者变量和常量值
ifxxx(arg1,arg2)
#for ture
else
#for false
endif

注意事项

条件判断语句只能用于管制 make 理论执行的语句,然而不能管制规定中命令的执行过程

条件判断语句的语法阐明

  • 罕用模式
ifxxx(arg1,arg2)
  • 其它非法模式
ifxxx "arg1""arg2"ifxxx'arg1''arg2'

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

小贴士

条件判断关键字

编程试验 1

.PHONY : test

var1 := A
var2 := $(var1)
var3 := 


test :
    ifeq ($(var1),$(var2))
        @echo "var1 == var2"
    else
        @echo "var1 != var2"
    endif
    
    ifeq ($(var2),$(var3))
        @echo "var2 == var3"
    else
        @echo "var2 != var3"
    endif
    
    ifdef var3
        @echo "var3 is NOT empty"
    else
        @echo "var3 is  empty"  
    endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入  
var1 == var2
var2 != var3
var3 is  empty

这里格局要留神,不然会报相似这样的谬误

zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
makefile:24: *** extraneous 'else'.  Stop.

一些工程教训 1

  • 条件判断语句之前能够有空格,然而不能有 Tab(‘t’)
  • 在条件语句中不要应用主动变量($@, $^,$<)
  • 一条残缺的条件语句必须位于同一个 makefile 中

一些工程教训 2

  • 条件判断相似 C 语言中的宏,预处理阶段无效,执行阶段有效
  • make 在加载 makefile 时

    • 首先计算表达式的值 ( 赋值形式不同,计算形式不同)
    • 依据判断语句的示意式决定执行的内容

编程试验 2.1

.PHONY : test

var1 := 
var2 := $(var1)

var3 = 
var4 = $(var3)  
# makefile 预处理阶段是无奈通晓 var4 是否有值,就认为有值了




test :
    ifdef var1
        @echo "var1 is NOT empty"
    else
        @echo "var1 is  empty"  
    endif
    
    ifdef var2
        @echo "var2 is NOT empty"
    else
        @echo "var2 is  empty"  
    endif
    
    ifdef var3
        @echo "var3 is NOT empty"
    else
        @echo "var3 is  empty"  
    endif
    
    ifdef var4
        @echo "var4 is NOT empty"
    else
        @echo "var4 is  empty"  
    endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入  
var1 is  empty
var2 is  empty
var3 is  empty
var4 is NOT empty

编程试验 2.2

.PHONY : test

var1 := 
var2 := $(var1)

var3 = 
var4 = $(var3)  
# makefile 预处理阶段是无奈通晓 var4 是否有值,就认为有值了

var3 = 3


test :
    ifdef var1
        @echo "var1 is NOT empty"
    else
        @echo "var1 is  empty"  
    endif
    
    ifdef var2
        @echo "var2 is NOT empty"
    else
        @echo "var2 is  empty"  
    endif
    
    ifdef var3
        @echo "var3 is NOT empty"
    else
        @echo "var3 is  empty"  
    endif
    
    ifdef var4
        @echo "var4 is NOT empty"
    else
        @echo "var4 is  empty"  
    endif
zhabin666@ubuntu:/mnt/hgfs/Fileshare_LinuxC$ make
// 输入  
var1 is  empty
var2 is  empty
var3 is NOT empty
var4 is NOT empty

小结

  • 条件判断依据条件的值来决定 make 的执行
  • 条件判断能够比拟两个不同变量或者变量和常量值
  • 条件判断在预处理阶段无效,执行阶段有效
  • 条件判断不能管制命令规定中的执行过程
退出移动版