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