在makefile中拆分依赖项的路径名

时间:2014-07-21 19:23:59

标签: makefile gnu-make

我需要将变量的路径拆分为列表。 例如,要将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.cx.c。 我设法创建一个分割字符串的专用函数。但只有在事先知道$1的所有可能值的情况下它才有效,而且call% 组合不起作用,所以我无法得到依赖的结果。

例如,

wd/%.o : $(call SPLIT,%.o) #DO NOT WORK
    cc -o $@ -c $^

调用目标wd / a / x.o只有一个依赖项,即/ x.o,即使SPLIT在命令行中正常工作。

有什么想法吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

subst函数可以拆分路径。要在先决条件列表中使用它,请使用Secondary Expansion

.SECONDEXPANSION:
wd/%.o : $$(addsuffix .c,$$(patsubst %,%.c,$$(subst /, ,$$*)))
    cc -o $@ -c $^