我需要将变量的路径拆分为列表。
例如,要将a/b/c/d
转换为a b c d
。
问题类似于this question,但只给出了一种解决方法,它不能用于依赖项。
需要拆分依赖文件名。
例如规则
wd/%.o : $1.c $2.c
cc -o $@ -c $1.c $2.c
应用于wd/a/x.o
取决于a.c
和x.c
。
我设法创建一个分割字符串的专用函数。但只有在事先知道$1
的所有可能值的情况下它才有效,而且call
和%
组合不起作用,所以我无法得到依赖的结果。
例如,
wd/%.o : $(call SPLIT,%.o) #DO NOT WORK
cc -o $@ -c $^
调用目标wd / a / x.o只有一个依赖项,即/ x.o,即使SPLIT在命令行中正常工作。
有什么想法吗?谢谢你的帮助!
答案 0 :(得分:2)
subst函数可以拆分路径。要在先决条件列表中使用它,请使用Secondary Expansion:
.SECONDEXPANSION:
wd/%.o : $$(addsuffix .c,$$(patsubst %,%.c,$$(subst /, ,$$*)))
cc -o $@ -c $^