我有以下隐含规则:
CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a
%.run : %.c $(LDLIBS)
$(CC) $< $(LDLIBS) -o $@ $(CFLAGS)
./$@
如果我运行make foo.run
,它将编译foo.c并执行foo.run。但是,再次运行make foo.run
将无法执行任何操作。如何拆分隐式规则,使其在需要时进行编译,但始终运行?
答案 0 :(得分:2)
例如:
CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a
.SECONDARY:
%.run : %.c $(LDLIBS)
$(CC) $< $(LDLIBS) -o $@ $(CFLAGS)
exec.%: %
./$<
现在运行它
make exec.foo.run