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.

questionAnswers(3)

yourAnswerToTheQuestion