En mi GNUmakefile, me gustaría tener una regla que use un directorio temporal. Por ejemplo:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Tal como está escrito, la regla anterior crea el directorio temporal en el momento en que se analiza la regla . Esto significa que, incluso si no lo hago.tar todo el tiempo, se crean muchos directorios temporales. Me gustaría evitar que mi / tmp esté lleno de directorios temporales no utilizados.
¿Hay alguna manera de hacer que la variable solo se defina cuando se activa la regla, en lugar de cuando se define?
Mi pensamiento principal es volcar el mktemp y el alquitrán en un script de shell, pero eso parece algo desagradable.