una subdirectorios por directorios crear consola como comandos carpeta archivo makefile wildcard gnu-make glob

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)