In meiner GNUmake-Datei möchte ich eine Regel haben, die ein temporäres Verzeichnis verwendet. Beispielsweise:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Wie oben beschrieben, erstellt die obige Regel das temporäre Verzeichnis zum Zeitpunkt des Analysierens der Regel . Dies bedeutet, dass viele temporäre Verzeichnisse erstellt werden, auch wenn ich nicht die ganze Zeit rumgefahren bin. Ich möchte vermeiden, dass mein / tmp mit nicht verwendeten temporären Verzeichnissen übersät ist.
Gibt es eine Möglichkeit, die Variable nur zu definieren, wenn die Regel ausgelöst wird, und nicht, wenn sie definiert wird?
Mein Hauptgedanke ist es, mktemp und tar in ein Shell-Skript zu kopieren, aber das scheint etwas unansehnlich.