Dans mon GNUmakefile, je voudrais avoir une règle qui utilise un répertoire temporaire. Par exemple:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Comme écrit, la règle ci-dessus crée le répertoire temporaire au moment où la règle est analysée . Cela signifie que, même si je ne distingue pas tout le temps, de nombreux répertoires temporaires sont créés. Je voudrais éviter que mon / tmp soit jonché de répertoires temporaires inutilisés.
Existe-t-il un moyen de faire en sorte que la variable soit définie uniquement lorsque la règle est déclenchée, par opposition à chaque fois qu'elle est définie?
Ma pensée principale est de vider le mktemp et le tar dans un script shell mais cela semble quelque peu disgracieux.