2011-04-11 4 views
1

je la règle implicite suivante:Spliting implicite GNU make règle

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] 

Si je lance make foo.run il va compiler et exécuter foo.c foo.run. Cependant, exécuter une deuxième fois make foo.run ne fera rien. Comment puis-je diviser la règle implicite de telle sorte qu'elle compile au besoin, mais qu'elle fonctionne toujours?

Répondre

2

Par exemple:

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.%: % 
     ./$< 

Maintenant, il suffit d'exécuter ce

make exec.foo.run