Une règle dans mon Makefile zippe un répertoire entier (res/
) dans un fichier Zip. De toute évidence, cette règle doit être exécutée lorsque tout fichier sous le res/
changements de répertoire. Ainsi, je veux que la règle ait comme condition préalable tous les fichiers sous ce répertoire. Comment puis-je appliquer cette règle?
Dans Bash avec l'option globstar
activée , vous pouvez obtenir une liste de tous les fichiers de ce répertoire en utilisant le modèle générique res/**/*
. Cependant, cela ne semble pas fonctionner si vous le spécifiez comme condition préalable dans le Makefile:
filename.jar: res/**/*
Même après touch
ing un fichier dans res/
, Faire des rapports fixes
make: `filename.jar' is up to date.
si clairement qu'il ne reconnaît pas le modèle.
Si je déclare le répertoire lui-même comme une condition préalable:
filename.jar: res
alors Make ne se réexécutera pas lorsqu'un fichier est modifié (je pense que make
ne regarde que la date de modification du répertoire lui-même, qui ne change que lorsque des enfants immédiats sont ajoutés, supprimés ou renommés).
Ce:
filename.jar: $(wildcard res/**/*)
semble fonctionner, au moins sur certaines plates-formes.
ÉDITER:
Ou mieux, coupez simplement le nœud:
filename.jar: $(Shell find res -type f)