Zdefiniuj zmienną make w czasie wykonywania reguły

W moim pliku GNUmakefile chciałbym mieć regułę, która używa katalogu tymczasowego. Na przykład:

out.tar: TMP := $(shell mktemp -d)
        echo hi $(TMP)/hi.txt
        tar -C $(TMP) cf $@ .
        rm -rf $(TMP)

Jak napisano, powyższa reguła tworzy katalog tymczasowy w momencie, gdy reguła jestsparsowany. Oznacza to, że nawet ja nie robię tego przez cały czas, powstaje wiele tymczasowych katalogów. Chciałbym uniknąć sytuacji, w której mój / tmp jest zaśmiecony nieużywanymi katalogami tymczasowymi.

Czy istnieje sposób na spowodowanie, aby zmienna była definiowana tylko wtedy, gdy reguła jest uruchamiana, w przeciwieństwie do tego, kiedy jest zdefiniowana?

Moją główną myślą jest zrzucenie mktemp i tar do skryptu powłoki, ale to wydaje się nieco brzydkie.

questionAnswers(3)

yourAnswerToTheQuestion