• 第8课


    1. makefile中的条件判断语句

    (1)makefile 中支持条件判断语句

      — 可以根据条件的值来决定 make 的执行

      — 可以比较 两个不同变量 或者 变量和常量值 方法 

          ifxxx  (arg1,arg2)

          # for true

          else

          # for false

          endif

    (2)注意事项:条件判断语句只能用于控制 make 实际执行的语句 ; 但是不能控制规则中命令的执行过程。

    2. 条件判断语句的语法

    (1)常用形式

        ifxxx   (arg1,arg2)

    (2)其它合法形式

        ifxxx   "arg1"  "arg2"

           ifxxx   'arg1'   'arg2'

        ifxxx   "arg1"   'arg2'

        ifxxx   'arg1'   "arg2" 

    (3)小贴士(注意条件判断语句的格式

           

     

    3. 条件判断关键字

        

    编程实验:

    .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

     运行结果:

      

    4. 一些工程经验

    (1)条件判断语句之前可以有空格,但是不能有 Tab 字符(' ')

    (2)在条件判断语句不要使用自动变量(@,@,^ , $<)

    (3)一条完整条件语句必 须位于同一个 makefile

    (4)条件判断类似C语言中的预处理阶段有效,执行阶段无效

    (5)make 加载 makefile

    • 首先计算表达式的值(赋值方式不同,计算方式不同

    • 根据判断语句的表达式决定执行的内容

          

    编程实验:

    .PHONY : test
    
    var1 :=
    var2 := $(var1)
    
    var3 =
    var4 = $(var3)    # 由于是递归赋值,因此不能确定变量的值,默认为def
    
    #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
     

    运行结果:

      

     

    5. 小结

    (1)条件判断根据条件的值来决定 make 的执行

    (2)条件判断可以比较 两个不同变量 或者 变量和常量值 

    (3)条件判断预处理阶段有效,执行阶段无效

    (4)条件判断不能控制规则中命令的执行过程

  • 相关阅读:
    ASP.NET提供文件下载函数
    web.config access数据库相对路径设置方法 for asp.net2.0
    MSDE安装后身份验证自动是windows验证,osql命令中修改为sqlserve身份验证或混合验证呢及注冊表修改方法
    关于ASP.NET IIS的注册:
    指定datagrid编辑框的宽度及相映属性(转)备用
    TransparentListBox
    在dll中使用FastReport会遇到以下内个问题
    值得学习一
    注册表恢复默认共享
    有关dnn的安装不成功问题
  • 原文地址:https://www.cnblogs.com/hoiday/p/9265716.html
Copyright © 2020-2023  润新知