ใน GNUmakefile ของฉันฉันต้องการมีกฎที่ใช้ไดเรกทอรีชั่วคราว ตัวอย่างเช่น:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
เขียนเป็นกฎข้างต้นสร้างไดเรกทอรีชั่วคราวในเวลาที่กฎจะถูกแยกวิเคราะห์ ซึ่งหมายความว่าแม้ว่าฉันจะไม่สร้าง out.tar ตลอดเวลาก็มีการสร้างไดเรกทอรีชั่วคราวจำนวนมาก ฉันต้องการหลีกเลี่ยง / tmp ของฉันที่เกลื่อนไปด้วยไดเรกทอรีชั่วคราวที่ไม่ได้ใช้
มีวิธีที่จะทำให้ตัวแปรถูกกำหนดเมื่อกฎถูกไล่ออกซึ่งตรงข้ามกับเมื่อใดก็ตามที่มันถูกกำหนด?
ความคิดหลักของฉันคือการทิ้ง mktemp และ tar ลงในเชลล์สคริปต์ แต่มันก็ดูไม่น่าดู