Makefile 表示依赖关系的特定于模式的变量

Makefile 表示依赖关系的特定于模式的变量,makefile,Makefile,我需要表达一个模式规则,其中目标的依赖项在模式的变量名中定义。我如何表达这一点 myvar_image1:=a.o b.o c.o d.o myvar_image2:=f.o g.o h.o i.o j.o myimage-%: $(myvar_%) ld -o $@ $(myvar_$*) 有没有办法做到这一点?据我所知,一个解决方案是: # For testing: # touch {a..e}.c # make all Sources = a.c b.c c.c d.c e.c

我需要表达一个模式规则,其中目标的依赖项在模式的变量名中定义。我如何表达这一点

myvar_image1:=a.o b.o c.o d.o
myvar_image2:=f.o g.o h.o i.o j.o

myimage-%: $(myvar_%)
    ld -o $@ $(myvar_$*)

有没有办法做到这一点?

据我所知,一个解决方案是:

# For testing:
# touch {a..e}.c
# make all
Sources = a.c b.c c.c d.c e.c
# Now $(Objects) = a.o b.o ...
Objects = $(Sources:.c=.o)

%.o: %.c
    @echo "Say hi from $< to $@"

all: $(Objects)
    @echo Say hi $^
#用于测试:
#触摸{a..e}.c
#全部
来源=a.c b.c.c d.c e.c
#现在$(对象)=a.o b.o。。。
对象=$(源:.c=.o)
%.o:%.c
@echo“从$<向$@问好”
全部:$(对象)
@回音打招呼$^

获得源代码后,makefile可以创建对象的适当扩展名。稍后让make使用模式样式创建每个对象:
%.o:%.c

为什么不能正常地表达依赖关系?即
myimage-image\u 1:a.o b.o c.o d.o
等。