第八篇 条件判断语句

makefile中支持条件判断语句,具体如下:
 
 
注意事项:条件判断语句只能用于控制make实际执行的语句;但是,不能控制规则中命令的执行过程。
  条件判断语句的常用语法如下,一般只是用其中的常用形式:
 
  具体的条件判断关键字如下:
 
 编写makefile文件,并执行make,结果如下所示:
 
 ifeq、else、endif前方不能有tab键,否则make解释器认为这是一个命令,在执行时会报语法错误。而@echo输出行是真正的命令,所以其前面必须是tab字符,这是需要特别注意的地方。
继续修改makefile并执行make,结果如下:
 
 
  以上几个条件语句的关键字我们都进行了测试,下面给出条件判断语句的一些工程经验:
 
 
 
  考虑如下的两段makefile程序:
 
  以上两段程序的唯一不同点是var1和var2的赋值方式不同,执行make,输出结果如下所示:
 
 
  make在加载makefile时,可以判断出var1和var2的值为空,var1的值为空即为没有定义(此处和条件赋值?=对变量是否定义的判断有所区别,在条件赋值时,即使定义的变量值为空,也认为已经定义了)。
  对于var3、var4这种递归赋值的方式,make在解析到var4 = $(var3)这一行时,只能知道var3是没有值得,而无法判断var4是否有值,只有延迟到执行makefile时才能具体知道var4是否真正有值。因此,在这种递归赋值的情况下,make解释器直接认为var4也是有值的,即认为var4是已经定义了值的。
再次修改makefile,在var4之后给var3赋值,结果如下:
 
 make在解析makefile时,完全可以判断出var3是否有值,而不用等到执行期间。
posted @ 2018-12-30 21:13  lemaden  阅读(98)  评论(0编辑  收藏  举报