В моем GNUmakefile я хотел бы иметь правило, которое использует временный каталог. Например:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf [email protected] .
rm -rf $(TMP)
Как написано, приведенное выше правило создает временную директорию в то время, когда правило анализируется. Это означает, что даже я не делаю out.tar все время, создаются многие временные каталоги. Я бы хотел, чтобы мой /tmp был завален неиспользуемыми временными каталогами.
Есть ли способ заставить переменную определять только при запуске правила, в отличие от всякий раз, когда он определен?
Моя основная мысль - выгрузить mktemp и tar в оболочку script, но это кажется несколько неприглядным.