por - Regla Makefile que depende de todos los archivos en un directorio(incluidos los subdirectorios)
crear carpeta ubuntu comandos (1)
Una regla en mi Makefile comprime un directorio completo ( res/
) en un archivo ZIP. Obviamente, esta regla debe ejecutarse cuando cambie cualquier archivo en el directorio res/
. Por lo tanto, quiero que la regla tenga como requisito previo todos los archivos debajo de ese directorio. ¿Cómo puedo implementar esta regla?
En Bash con la opción globstar
habilitada , puede obtener una lista de todos los archivos en ese directorio usando el patrón de comodín res/**/*
. Sin embargo, no parece funcionar si lo especifica como un requisito previo en el Makefile:
filename.jar: res/**/*
Incluso después de touch
un archivo en res/
, crear informes
make: `filename.jar'' is up to date.
tan claramente no es reconocer el patrón.
Si declaro el directorio como un requisito previo:
filename.jar: res
luego, Make no se volverá a ejecutar cuando se modifique un archivo (creo que make
solo se ve en la fecha modificada del directorio mismo, que solo cambia cuando se agregan, eliminan o renombran hijos inmediatos).
Esta:
filename.jar: $(wildcard res/**/*)
Parece funcionar, al menos en algunas plataformas.
EDITAR:
O mejor, simplemente cortar el nudo:
filename.jar: $(shell find res -type f)