1.abspath
- 功能:将 _names 中的各路径名转换成绝对路径
- 形式:$(abspath _names)
- 返回值:返回转换结果
实例:
-
.PHONY : all
-
-
ROOT := $(abspath /usr/.../lib)
-
-
all :
-
@echo $(ROOT)
运行结果
$make
/lib
2.addprefix
- 功能:给名字列表 _names 中的每一个名字增加前缀 _prefix
- 形式:$(addprefix _prefix, _names)
- 返回值:返回增加了前缀的名字列表
实例:
-
.PHONY : all
-
-
without_dir = foo.c bar.c main.o
-
with_dir := $(addprefix objs/, $(without_dir))
-
-
all :
-
@echo $(with_dir)
运行结果
$make
objs/foo.c objs/bar.c objs/main.o
3.addsuffix
- 功能:给名字列表 _names 中的每一个名字增加后缀 _suffix
- 形式:$(addsuffix _suffix, _names)
- 返回值:返回增加了后缀的名字列表
实例:
-
.PHONY : all
-
-
without_suffix = foo bar main
-
with_suffix := $(addsuffix .c, $(without_suffix))
-
-
all :
-
@echo $(with_suffix)
运行结果
$make
foo.o bar.o main.o
4.eval
- 功能:使 make 再一次解析 _text 语句
- 形式:$(eval _text)
- 返回值:空
实例:
-
.PHONY : all
-
-
sources = foo.c bar.c baz.s ugh.h
-
$(eval sources := $(filter %.c %.s, $(sources)))
-
-
all :
-
@echo $sources
运行结果
$make
main.c
5.filter
- 功能:从一个名字列表 _text 中根据模式 _pattern 得到满足需要的名字列表
- 形式:$(filter _pattern, _text)
- 返回值:返回满足需要的名字列表
实例:
-
.PHONY : all
-
-
sources = foo.c bar.c baz.s ugh.h
-
sources := $(filter %.c %.s, $(sources))
-
-
all :
-
@echo $(sources)
运行结果
$make
foo.c bar.c baz.s
6.filter_out
- 功能:从名字列表 _text 中根据模式 _pattern 滤除一些名字
- 形式:$(filter_out _pattern, _text)
- 返回值:返回滤除后的名字列表
实例:
-
.PHONY : all
-
-
objs = main1.o foo.o main2.o bar.o
-
ret = $(filter_out main%.o, $(objs))
-
-
all :
-
@echo $(ret)
运行结果
$make
foo.o bar.o
7.notdir
- 功能:从路径 _names 中提取文件名
- 形式:$(notdir _names)
- 返回值:返回文件名
实例:
-
.PHONY : all
-
-
file_name := $(notdir code/foo/src/foo.c code/bar/src/bar.c)
-
all :
-
@echo $(file_name)
运行结果
$make
foo.c bar.c
8.patsubst
- 功能:将名字列表 _text 中符合 _pattern 模式的名字替换为 _replacement
- 形式:$(patsubst _pattern, _replacement, _text)
- 返回值:返回替换后的名字列表
实例:
-
.PHONY : all
-
-
mixed = foo.c bar.c main.o
-
obj := $(patsubst %.c, %.o, $(mixed))
-
-
all :
-
@echo $(obj)
运行结果
$make
foo.o bar.o main.o
9.realpath
- 功能:获取 _names 所对应的真实路径名
- 形式:$(realpath _names)
- 返回值:返回真实路径名
实例:
-
.PHONY : all
-
-
ROOT := $(realpath ./..)
-
-
all :
-
@echo $(ROOT)
运行结果
$pwd
/home/jiang
$make
/home
10.strip
- 功能:清除名字列表中的多余空格
- 形式:$(strip _string)
- 返回值:返回去除多余空格的 _string
实例:
-
.PHONY : all
-
-
ori = foo.c bar.c
-
str := $(strip $(ori))
-
-
all :
-
@echo $(str)
运行结果
$make
ori = foo.c bar.c
str = foo.c bar.c
11.wildcard
- 功能:获取当前工作目录下满足 _pattern 模式的文件或目录名列表
- 形式:$(wildcard _pattern)
- 返回值:返回获取到的文件或目录名列表
实例:
-
.PHONY : all
-
-
SRCS = $(wildcaed *.c)
-
-
all :
-
@echo $(SRCS)
运行结果
$ls
bar.c foo.c main.c
$make
bar.c foo.c main.c
参考文献:《专业嵌入式软件开发》李云·著
2016年7月5日,星期二