मेरे जीएनयूमेकफाइल में, मैं एक नियम बनाना चाहता हूं जो अस्थायी निर्देशिका का उपयोग करता हो। उदाहरण के लिए:नियम निष्पादन समय पर चर बनाने के लिए परिभाषित करें
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf [email protected] .
rm -rf $(TMP)
लिखा के रूप में, इसके बाद के संस्करण नियम समय है कि शासन पार्स है पर अस्थायी निर्देशिका बनाता है। इसका मतलब है कि, मैं भी हर समय बाहर नहीं निकलता हूं, कई अस्थायी निर्देशिकाएं बनती हैं। मैं अप्रयुक्त अस्थायी निर्देशिकाओं से भरे हुए/tmp से बचना चाहता हूं।
क्या वैरिएबल को केवल तब परिभाषित किया जा सकता है जब नियम निकाल दिया जाता है, जब भी इसे परिभाषित किया जाता है?
मेरा मुख्य विचार mktemp को डंप करना और शेल स्क्रिप्ट में टार करना है, लेकिन यह कुछ हद तक अस्पष्ट लगता है।
में कुछ स्पष्टीकरण कूल ... इस नहीं होगा गुंजाइश TMP इस लक्ष्य को, यह? तो यदि ऐसे अन्य नियम हैं जिनके पास अपना स्वयं का $ (टीएमपी) उपयोग है (संभवतः समानांतर में -जे में), तो संघर्ष हो सकते हैं? इसके अलावा, @echo भी आवश्यक है? ऐसा लगता है कि आप इसे छोड़ सकते हैं। –
मुझे नहीं लगता था कि आप इसे '@ echo' के बिना कर सकते हैं, लेकिन मैंने इसका परीक्षण किया, और यह काम करता है। अच्छी पकड़! मैं इसे अपने जवाब में बदल दूंगा। –
जहां तक स्कोपिंग जाता है, टीएमपी वैरिएबल उस विशेष नियम के लिए विशिष्ट नहीं होगा।यह वैश्विक नामांकन में मौजूद होगा और उसी नाम के साथ अन्य चर के साथ संघर्ष कर सकता है। क्या वांछित व्यवहार है? यदि आवश्यकता हो तो इसके आसपास काम करने के शायद तरीके हैं। –