Makefile通用二进制文件编译

时间:2014-06-16 17:41:05

标签: makefile

我有一组共享相同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 $@ $^

但是可以不使用一个吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Static Pattern Rules

bin1 bin2 bin3: %: %.o libfoo.a
    $(LDENV) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^

这种情况更干净,您确定%仅匹配bin1bin2bin3目标(我认为这是您想要的)。< / p>