2011-04-11 72 views
1

我有以下的隐含规则:劈裂隐含的GNU使规则

CFLAGS=-I../tcp/ -I../libip_udp/ -g -Wall           
LDLIBS=framework.o ../tcp/libtcp.a ../libip_udp/libip.a       

%.run : %.c $(LDLIBS)                
     $(CC) $< $(LDLIBS) -o [email protected] $(CFLAGS)          
     ./[email protected] 

如果我运行make foo.run将文件foo.c编译和执行foo.run。但是,第二次运行make foo.run不会做任何事情。我如何拆分隐式规则以便在需要时编译,但始终运行?

回答

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 [email protected] $(CFLAGS) 

exec.%: % 
     ./$< 

现在只要运行它

make exec.foo.run