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.