第4课

第4课 - 变量和不同的赋值方式

1. makefile中的变量

  (1)makefile 中支持程序设计语言中变量的概念

  (2)makefile 中的变量只代表文本数据(字符串)

  (3)makefile 中的命名规则

     — 变量名可以包含字符 , 数字 , 下划线

     — 不能包含 ":" , "#" , "="  或 " "

     — 变量名大小写敏感

2. 变量的定义和使用

    

 1 #演示变量的使用
 2 
 3 CC := gcc
 4 TARGET := hello.out
 5 
 6 $(TARGET) : main.o func.o
 7     $(CC) -o $(TARGET) main.o func.o
 8 
 9 main.o : main.c
10     $(CC) -o  main.o -c main.c
11 
12 func.o : func.c
13     $(CC) -o func.o -c func.c
14     
15 .PHONY : rebuild all clean
16 
17 rebuild : clean all
18 
19 all : $(TARGET)
20 
21 clean : 
22     rm *o $(TARGET)

3. makefile中变量的赋值方式

  (1)简单赋值(:=)

    — 程序设计语言中的通用的赋值方式

    — 只针对当前语句的变量有效

  

  (2)递归赋值(=)

    — 赋值操作可能影响多个其它变量

    — 所有与目标变量相关的其它变量都将受到影响

    — 脚本语言也是顺序一句一句执行的,递归赋值会改变与目标变量相关的其它变量

    — 只会影响那些同样是递归赋值的变量

  

  (3)条件赋值(?=)

    — 如果变量未定义,使用赋值符号中的只定义变量

    — 如果变量已经定义,赋值无效

  

  (4)追加赋值(+=)

    — 原变量值之后加上一个新值

    — 原变量与新值之间由空格隔开

  

 1 #演示4种变量的定义方式
 2 
 3 # ex1
 4 # x := foo
 5 # y := $(x)b
 6 # x := new
 7 
 8 # ex2
 9 # x = foo
10 # y = $(x)b        //这里必须也是 = 不能是 := 否则不会影响
11 # x = new
12 
13 # a = $(b)
14 # b = $(c)
15 # c = hello-makefile
16 
17 # ex3
18 # x := foo
19 # y := $(x)b
20 # x ?= new
21 
22 # ex4
23 # x := foo
24 # y := $(x)b
25 # x += new
26 
27 .PHONY : test
28 
29 test :
30     @echo "x => $(x)"
31     @echo "y => $(y)"
32     @echo "a => $(a)"
33     @echo "b => $(b)"
34     @echo "c => $(c)"

注:本文整理于《狄泰12月提升计划》课程内容

狄泰QQ群:199546072

原文地址:https://www.cnblogs.com/shiwenjie/p/6774437.html