makefile的特性-部分语法记录

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 条件参数, 执行参数)

如果条件参数为空,运行执行参数部分

你可能感兴趣的:(Linux/MCU/MPU,linux,运维,服务器)