我使用GNU make implicit rule将我的二进制文件链接在一起,如下所示:
foo : foo.o bar.o
但是,我还希望能够在之后使用UPX(通过调用foo
)编译生成的二进制文件upx ultra-brute foo
。当然,我可以这样做:
foo : foo.o bar.o
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
upx --ultra-brute $@
然而,这基本上迫使我重复隐式规则,而我真正想做的只是在它已经做了之后再调用upx ultra-brute
。有没有办法得到我想要的东西,而不必手动将隐式规则写入配方?
答案 0 :(得分:1)
upx
的调用就地修改了文件,这意味着如果它失败或被中断,make
将不知道再次运行它。通常,您应该避免编写类似的Makefile规则。
如果我们把它分开,那就变得容易了:
foo.fat: foo.o bar.o
foo: foo.fat
upx --ultra-brute -o $@ $<