Crear regla en makefile por sólo un conjunto de archivos
Pregunta
Yo escribo un Makefile, y quiero usar una regla genérica con comodines, como
%: bkp/%
cp $< $@
Pero quería esta regla sea válida sólo para unos pocos archivos específicos. Quería definir una variable con la lista, por ejemplo
lista_de_archivos = foo.c bar.c zzz.c
y configure la regla por lo que sólo es válido para los archivos que se enumeran en esta variable. ¿Cómo lo hago?
Solución
¿Quieres una regla de patrón estática:
file_list = foo.c bar.c zzz.c
$(file_list): %: bkp/%
cp $< $@
La sintaxis es muy similar a la regla implícita patrón que estaba utilizando. Y sí, por lo general es más seguro (más predecible).
Otros consejos
Por supuesto, 5 minutos más tarde encontró la respuesta a mí mismo ...:)
Lo que necesitamos es una regla de patrón estático.
http://www.gnu.org/software/ make / manual / make.html # estático-patrón
Así que el ejemplo podría ser resuelto con
$(file_list) : % : bkp/%
cp $< $@