Makefile模式替换:如何将A B C转为A/libA.o B/libB.o C/libC.o
在Makefile中转换单词列表为指定格式的方法
你可以通过两种常用方法实现这个需求:
方法一:使用patsubst函数
patsubst其实完全能满足你的需求,只要正确设置匹配和替换模式即可。示例代码:
WORDS = A B C TARGETS = $(patsubst %, %/lib%.o, $(WORDS))
这里的%作为通配符匹配列表中的每个单词(比如A、B、C),替换模式%/lib%.o会把每个匹配到的单词X转换成X/libX.o,最终得到你需要的列表。
方法二:使用foreach循环
如果觉得patsubst的模式不够直观,也可以用foreach遍历列表逐个拼接:
WORDS = A B C TARGETS = $(foreach word, $(WORDS), $(word)/lib$(word).o)
这个逻辑更直白:遍历WORDS中的每个单词,将其拼接成[单词]/lib[单词].o的格式。
内容的提问来源于stack exchange,提问作者shuhalo
相关产品推荐
相关产品推荐

