Makefile 文件名处理函数(下)
addsuffix函数:给文件名加后缀
addsuffix函数的作用是:给文件列表中的每个文件名添加后缀SUFFIX
$(addsuffix SUFFIX, NAMES…)
使用示例:
.PHONY: all
LIST = apple banana peach
all:
@echo "LIST = $(LIST)"
@echo "addsuffix = $(addsuffix .c, $(LIST))"
运行结果:
# make
LIST = apple banana peach
addsuffix = apple.c banana.c peach.c
addprefix函数:给文件名加前缀
addprefix函数的作用是:给文件列表中的每个文件名添加一个前缀PREFIX
$(addprefix PREFIX, NAMES…)
使用示例:
.PHONY: all
LIST = apple.c banana.c peach.c
all:
@echo "LIST = $(LIST)"
@echo "addsuffix = $(addprefix /home/wit/, $(LIST))"
执行make命令,运行结果:
make
LIST = apple.c banana.c peach.c
addsuffix = /home/wit/apple.c /home/wit/banana.c /home/wit/peach.c
join函数:单词连接
join函数的作用是:将字符串LIST1和字符串LIST2的各个单词依次连接,合并为新的单词构成的字符串
$(join LIST1,LIST2)
使用示例:
.PHONY: all
LIST1 = apple banana peach
LIST2 = .c .h .s
LIST = $(join $(LIST1), $(LIST2))
all:
@echo "LIST1 = $(LIST1)"
@echo "LIST2 = $(LIST2)"
@echo "LIST = $(LIST)"
运行结果:
# make
LIST1 = apple banana peach
LIST2 = .c .h .s
LIST = apple.c banana.h peach.s
如果两个字符串中的单词个数不相等,则只合并前面的单词,剩下的单词不合并。如下面的Makefile:
.PHONY: all
LIST1 = apple banana peach
LIST2 = .c .h
LIST = $(join $(LIST1), $(LIST2))
all:
@echo "LIST1 = $(LIST1)"
@echo "LIST2 = $(LIST2)"
@echo "LIST = $(LIST)"
运行结果:
# make
LIST1 = apple banana peach
LIST2 = .c .h
LIST = apple.c banana.h peach
因为LIST2中只有2个单词,所以我们可以看到最后一个单词peach没有参与合并,但仍作为一个新的单词合并到LIST变量中。
wildcard函数:列出所有符号匹配模式的文件
wildcard函数的作用是:列出当前目录下所有符合PATTREN模式的文件名
$(wildcard PATTERN)
其中PATTREN可以使用shell能识别的通配符:?、*等。
使用示例:列出当前目录下的所有C文件
.PHONY: all
LIST = $(wildcard *.c)
all:
@echo "LIST = $(LIST)"
执行make命令,运行结果为:
# ls
add.c add.h hello.c main.c makefile sub.c sub.h
# make
LIST = hello.c main.c add.c sub.c
《Makefile工程实践》视频教程,一线开发工程师独家录制,网上首家讲解Makefile的实战课程。从零开始,教你一步一步编写一个工程项目的Makefile,支持使用第三方静态库、动态库,支持指定模块或目录编译生成静态库、动态库,赠送企业级的Makefile模板,学完即可拿来使用,投入项目开发实战,具备独立开展项目开发和管理的能力。详情请点击淘宝链接:Linux三剑客