Definieren Sie make variable zur Ausführungszeit der Regel

In meinem GNUmakefile möchte ich eine Regel haben, die ein temporäres Verzeichnis verwendet. Zum Beispiel:

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

Wie beschrieben erstellt die obige Regel das temporäre Verzeichnis zu dem Zeitpunkt, an dem sich die Regel befindetanalysiert. Dies bedeutet, dass, auch wenn ich nicht die ganze Zeit out.tar mache, viele temporäre Verzeichnisse erstellt werden. Ich möchte vermeiden, dass mein / tmp mit nicht verwendeten temporären Verzeichnissen übersät wird.

Gibt es eine Möglichkeit, die Variable nur dann zu definieren, wenn die Regel ausgelöst wird, und nicht immer, wenn sie definiert wird?

Mein Hauptgedanke ist, mktemp und tar in ein Shell-Skript zu schreiben, aber das scheint etwas unansehnlich zu sein.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage