Определить переменную make во время выполнения правила

В моем GNUmakefile я хотел бы иметь правило, которое использует временный каталог. Например:

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

Как написано, приведенное выше правило создает временный каталог в то время, когда правилоразобранный, Это означает, что, даже если я не разглядываю .tar все время, создается много временных каталогов. Я бы хотел, чтобы мои / tmp были завалены неиспользованными временными каталогами.

Есть ли способ заставить переменную определяться только при запуске правила, а не всякий раз, когда оно определено?

Моя основная мысль - сбросить mktemp и tar в сценарий оболочки, но это выглядит несколько неприглядно.

Ответы на вопрос(3)

Ваш ответ на вопрос