我是靠谱客的博主 英俊大侠,最近开发中收集的这篇文章主要介绍Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
介绍几个常用的makefile函数
- addprefix.
$(addprefix <prefix>, <name1 name2 ...>)
功能:把<prefix>加到name序列中的每一个元素前面。
result = $(addprefix %., c cpp) test: @echo $(result)
输出:%.c %.cpp
- addsuffix 用法与addprefix相同,只是一个是前缀,一个是后缀。
- if.
$(if <condition>, <then-part>,<else-part>)
功能:<condition>参数是 if的表达式,如果其返回的为非空字符串,那么这个表达式就相当于返回真,于是,<then-part>会被计算,返回计算结果字符串;否则<else- part>会被计算,返回计算结果字符串。<else-part>可以省略。
suffix := result1 := $(if $(suffix), $(addprefix %.,$(suffix)), %) suffix := c cpp result2 := $(if $(suffix), $(addprefix %.,$(suffix)), %) test: @echo result1 is $(result1) @echo result2 is $(result2)
输出:
result1 is % result2 is %.c %.cpp
- wildcard.
$(wildcard <pattern1 pattern2 ...>)
功能:展开pattern中的通配符
$(wildcard src/*)
输出:得到src目录下的文件列表
- filter.
$(filter <pattern1 pattern2 ...>, <text>)
功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式。
$(filter %.c %.cpp, $(wildcard src/*))
输出:src目录下所有后缀是.c和.cpp的文件序列。
- call.
$(call <expression>,<param1>,<param2>,...)
功能:<expression>中有$(1),$(2)这种占位符,call函数使用<param1>,<param2>来替换$(1),$(2),并计算表达式的值,返回结果字符串。
listfile = $(filter $(if $(2),$(addprefix %.,$(2)),%), $(wildcard $(addsuffix $(SLASH)*, $(1)))) list_cc = $(call listfile, src, c cpp)
输出:src目录下所有后缀是.c和.cpp的文件序列
最后
以上就是英俊大侠为你收集整理的Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call)的全部内容,希望文章能够帮你解决Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复