1.变量定义
- 1.1 = 来实现
-
- a1= $(a2)
-
- a2 = lib.o
-
- 1.2 := 来实现, 这种不能通过后面的变量来定义
-
- a1 := $(a2) b.0
-
- a2 := lib.o
-
- 1.3 += 来实现
-
- a1= b.0
-
- a2 += a1
-
- 1.4 ?= 来实现,这种方式前面如果定义了,后面定义则无效
-
- a1 := a.o
-
- a1 ?= lib.o //结果 a1 = a.o
2.文件查找
- 2.1 VPATH = 目录 : 目录
-
- VPATH = /usr : /proc
-
- 在当前路径查找不到后,这样会依次按顺序查找这些目录
-
- 2.2 vpath %.c /usr : /proc
-
- 在当前路径查找不到后,这样会依次按顺序查找这些目录的C文件
3. 常用的基本函数
- 3.1 $(subst 参数1,参数2 , 参数3)
-
- 把参数3中的参数1替换成参数2,然后返回被替换后的参数3
-
- 3.2 $(patsubst 模式格式,参数1,参数2)
-
- 把参数2中符合模式的单词替换成参数1中
-
- ret = $(patsubst %c,%.o,a.c b.c) //ret 为a.o b.o
-
- 3.3. $(wildcard 模式参数)
-
- 列出当前目录下所有符合参数的文件名
-
- ret := $(wildcard *.c) //当前目录下所有C文件
-
- 3.4 $(findstring 参数1, 参数2)
-
- 在参数2中查找参数1
-
- 3.5 $(filter 模式参数,参数1)
-
- 从参数1中筛选出符合模式参数的字符串
-
- obj = a.c b.c a.h b.h
-
- ret := $(filter %.c,$(obj)) //ret = a.c b.c
-
- 3.6 $(dir 参数)
-
- 从参数中取出目录部分
-
- ret := $(dir /home/usr/lib/a.o) //ret = /home/usr/lib/
-
- 3.7 $(if 条件参数, 执行参数)
-
- 如果条件参数为空,运行执行参数部分