6. 变量的高级主题(上)

1. 变量值的替换

  1. 使用指定字符(串)替换变量值中的后缀字符(串)
  2. 语法格式:$(var:a=b) 或 $(var:a=b)
    替换表达式中不能有任何的空格
    make中支持使用${ }对变量进行取值

src := a.cc b.cc c.cc
obj := $(src:cc=o)
test :
(tab)@echo “obj => $(obj)”

2. 变量的模式替换

  1. 使用%保留变量值中的指定字符,替换其他字符
  2. 语法格式:$(var:a%b=x%y)或${var:a%b=x%y}
    替换表达式中不能有任何的空格
    make中支持使用${}对变量进行取值

src := a1b.c a2b.c a3b.c
obj := $(src:a%b.c=x%y)
test:
(tab)@echo “obj => $(obj)”

3. 规则中的模式替换

OBJS := func.o main.o
$(OBJS) : %.o : %.c
(tab)gcc -o $@ -c $^

等同于以下代码:

func.o : func.c
(tab)gcc -o $@ -c $^
main.o : main.c
(tab)gcc -o $@ -c $^

好处:大工程中可以显现出来,比较简洁,容易维护大工程

6. 变量的高级主题(上)_第1张图片
6. 变量的高级主题(上)_第2张图片

4. 命令行变量

6. 变量的高级主题(上)_第3张图片
变量的值以命令行为准,可以临时改变值。

5. override关键字

  1. 用于指示makefile中定义的变量不能被覆盖
  2. 变量的定义和赋值都需要使用override关键字
    6. 变量的高级主题(上)_第4张图片
    6. 变量的高级主题(上)_第5张图片

6. 小结

6. 变量的高级主题(上)_第6张图片
6. 变量的高级主题(上)_第7张图片

你可能感兴趣的:(make/makefile)