拆分隐式GNU make规则

时间:2011-04-11 12:00:00

标签: gnu-make

我有以下隐含规则:

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将无法执行任何操作。如何拆分隐式规则,使其在需要时进行编译,但始终运行?

1 个答案:

答案 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