2011-04-11 107 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