GNUmakefile'mda geçici bir dizin kullanan bir kurala sahip olmak istiyorum. Örneğin:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Yazıldığı gibi, yukarıdaki kural, kuralın ayrıştırıldığı sırada geçici dizini oluşturur . Bu demektir ki, ben bile yapamıyorum. Yıldız her zaman, birçok geçici dizin oluşturulur. / Tmp dosyamın kullanılmayan geçici dizinlerle dolmasından kaçınmak istiyorum.
Değişkenin yalnızca kural tetiklendiğinde tanımlanmasına neden olmanın bir yolu var mı?
Ana düşüncem mktemp ve katranı bir kabuk betiğine dökmek ama biraz çirkin görünüyor.