Расщепление неявного GNU make rule - PullRequest
1 голос
/ 11 апреля 2011

У меня есть следующее неявное правило:

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 Ответ

2 голосов
/ 22 апреля 2011

Например:

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
...