GNUmakefile で、一時ディレクトリを使用するルールを作成したいと考えています。例えば:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
書かれているように、上記のルールは、ルールが解析されるときに一時ディレクトリを作成します。これは、常に out.tar を作成していなくても、多くの一時ディレクトリが作成されることを意味します。/tmp に未使用の一時ディレクトリが散らばるのを避けたいと思います。
変数が定義されるたびにではなく、ルールが起動されたときにのみ変数が定義されるようにする方法はありますか?
私の主な考えは、mktemp と tar をシェル スクリプトにダンプすることですが、それはやや見苦しく思えます。