Sto scrivendo un Makefile che esegue una generazione di dipendenze e mi sono trovato a dover duplicare le regole perché la base (legacy) contiene una combinazione di file .cpp
e .cc
. Sembra un po 'brutto. È comunque necessario specificare che i prerequisiti di un target possono essere sia .cpp
o .cc
file?Evita la duplicazione delle regole di creazione GNU
Quindi, piuttosto che avere:
%.d : %.cpp
$(CPP) -MM $(CPPFLAGS) $<
%.d : %.cc
$(CPP) -MM $(CPPFLAGS) $<
creare qualcosa senza la duplicazione come:
%.d : %.(cpp | cc)
$(CPP) -MM $(CPPFLAGS) $<
O è questa ridondanza forzata solo un elemento sfavorevole di GNU make di design?
se si utilizza GNU autotools è possibile utilizzare macro m4 – Kevin