Definir tornar variável no tempo de execução da regra
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 éanalisado. Isso significa que, mesmo que eu não saiba o tempo todo, muitos diretórios temporários são criados. Eu gostaria de evitar que meu / tmp fique cheio de diretórios temporários não utilizados.
Existe uma maneira de fazer com que a variável seja definida somente quando a regra é disparada, ao contrário de quando ela é definida?
Meu principal pensamento é despejar o mktemp e tar em um script de shell, mas isso parece um pouco sem graça.