Makefile 我怎样才能把这两个食谱写在一起呢?

Makefile 我怎样才能把这两个食谱写在一起呢?,makefile,gnu-make,makefile-project,Makefile,Gnu Make,Makefile Project,这是我的Makefile的一部分 bin/shafa: $(OBJDIR)/shafa.o $(CC) -g $^ -o "$@" bin/shafad: $(OBJDIR)/shafad.o $(CC) -g $^ -o "$@" 我想用一个食谱来做这个。我做了这样的事情: bin/shafa%: $(OBJDIR)/shafa%.o $(CC) -g $^ -o "$@" 但我知道它不起作用,因为%与

这是我的Makefile的一部分

bin/shafa: $(OBJDIR)/shafa.o
    $(CC) -g $^ -o "$@"

bin/shafad: $(OBJDIR)/shafad.o
    $(CC) -g $^ -o "$@"
我想用一个食谱来做这个。我做了这样的事情:

bin/shafa%: $(OBJDIR)/shafa%.o
     $(CC) -g $^ -o "$@"

但我知道它不起作用,因为%与shafa不匹配,只有shafad,这就是为什么我想要类似于
*
,问题是我不知道如何使用通配符。

模式必须至少匹配一个字符,所以
shafa%
shafa
不匹配。但是您可以使用
shaf%
来代替,如下所示:

bin/shaf%: $(OBJDIR)/shaf%.o
        $(CC) -g $^ -o "$@"

非常感谢你的回答!它确实匹配shafa和shafad,但我一直在寻找只匹配它的东西,因为在这种情况下,它将匹配shafe和shafi,等等。假设我不想要,那么你就不能使用模式规则。如果要匹配一组特定的已知目标,可以使用静态模式规则: