• 第八篇 条件判断语句


     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是否有值,而不用等到执行期间。
     
    参考如下:
        狄泰软件教程与课件
        GUN make手册
        专业嵌入式软件开发
     
     
     
     
     
     
     
     
     
     
     
     
     



  • 相关阅读:
    Day10
    Python pyspider 安装与开发
    深入理解ES6之《块级作用域绑定》
    深入理解ES6之《扩展对象》
    这些特效对于学习前端我们很有用
    算法之旅 | 选择排序法
    JavaScript读取剪贴板中的表格生成图片
    深入理解ES6之《ES7》
    深入理解ES6之《用模块封装代码》
    php://input,$_POST,$HTTP_RAW_POST_DATA区别
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/8417303.html
Copyright © 2020-2023  润新知