zoukankan      html  css  js  c++  java
  • 4.变量和不同的赋值方式

    • 变量介绍

      • makefile 中支持程序设计语言中变量的概念
      • makefile 中的变量只代表文本数据(即只有一种类型:字符串)
      • makefile 中的变量名规则
        • 变量名可以包含字符,数字,下划线
        • 不能包含 ":""#""="" "
        • 变量名大小写敏感
    • 变量的定义和使用

      ##变量定义
      CC := gcc
      TARGET := hello.out
      ##变量使用
      $(TARGET) : func.o main.o
      	$(CC) -o $(TARGET) func.o main.o
      
    • makefile 中变量的赋值方式

      • 简单赋值(:=

        • 程序设计语言在通用的赋值方式
        • 只针对当前语句的变量有效
        x := foo
        y := $(x)b
        x := new
        
        .PHONY : test
        test :
                @echo "x => $(x)"
                @echo "y => $(y)"
        
        ##执行结果
        x => new
        y => foob
        
      • 递归赋值(=

        • 赋值操作可能影响多个其他变量
        • 所有与目标变量相关的其它变量都将受到影响
        #code1
        x = foo
        y = $(x)b
        x = new
        .PHONY : test
        test :
                @echo "x => $(x)"
                @echo "y => $(y)"
        #执行结果
        x => new
        y => newb
        
        
        #code2
        a = $(b) #b还没有被定义,所以a的值为空
        b = $(c) #c还没有被定义,所以b的值为空
        c = hello-makefile
        .PHONY : test
        test :
                @echo "a => $(a)"
                @echo "b => $(b)"
                @echo "c => $(c)"
        ##执行结果
        a => hello-makefile
        b => hello-makefile
        c => hello-makefile
        
      • 条件赋值(?=

        • 如果变量未定义,使用赋值符号中的值定义变量
        • 如果变量已经定义,赋值无效
        x := foo
        y := $(x)b
        x ?= new
        .PHONY : test
        
        test :
                @echo "x => $(x)"
                @echo "y => $(y)"
        
        ##执行结果
        x => foo
        y => foob
        
      • 追加赋值(+=

        • 原变量值之后加上一个新值(相当于字符串的追加)
        • 原变量值与新值之间由空格隔开
        x := foo
        y := $(x)b
        x += $(y)
        
        .PHONY : test
        
        test :
                @echo "x => $(x)"
                @echo "y => $(y)"
        
        ##执行结果
        x => foo foob
        y => foob
        
  • 相关阅读:
    练习2-15 求简单交错序列前N项和(15 分)
    js预解析实例
    one:arguments对象伪数组
    第一章 评估工具
    第6章条件处理
    第五章----过程
    第4章 数据传递.寻址和算术运算
    第3章 汇编语言基础
    第2章-------------IA-32处理器体系结构
    第一章-------基本概念
  • 原文地址:https://www.cnblogs.com/bky-hbq/p/13197761.html
Copyright © 2011-2022 走看看