我有一组共享相同Makefile规则模式的源文件:
bin1: bin1.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
bin2: bin2.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
bin3: bin3.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
...
现在,我如何重构这一点以避免反复重复相同的规则?如果将文件扩展名添加到二进制文件中,这很容易:
%.out: %.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
但是可以不使用一个吗?
答案 0 :(得分:1)
您可以使用Static Pattern Rules:
bin1 bin2 bin3: %: %.o libfoo.a
$(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
这种情况更干净,您确定%
仅匹配bin1
,bin2
和bin3
目标(我认为这是您想要的)。< / p>