No meu GNUmakefile, eu gostaria de ter uma regra que use um diretório temporário. Por exemplo:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Conforme escrito, a regra acima cria o diretório temporário no momento em que a regra é analisada . Isso significa que, mesmo eu não entendo.tar o tempo todo, muitos diretórios temporários são criados. Eu gostaria de evitar que meu / tmp esteja repleto de diretórios temporários não utilizados.
Existe uma maneira de fazer com que a variável seja definida apenas quando a regra é acionada, em vez de sempre que é definida?
Meu pensamento principal é despejar o mktemp e o tar em um script de shell, mas isso parece um pouco desagradável.