पर अतिरिक्त फ़ाइलों को हटाने के लिए हो रही है हम हाल ही में हमारे मेक-आधारित बिल्ड प्रक्रिया में निर्भरताओं के लिए .d फ़ाइलों को संभालने के तरीके के बारे में कुछ चर्चा कर रहे हैं। मुद्दा उठाया गया है कि कभी-कभी .d फ़ाइलों को दूषित होने पर दूषित हो सकता है।त्रुटि
हम यह सुनिश्चित करने के लिए .DELETE_ON_ERROR लक्ष्य का उपयोग कर रहे हैं कि यदि कोई बिल्ड बाधित हो या विफल हो जाए, तो वस्तु फ़ाइलों को उत्पन्न करने की प्रक्रिया में हटा दिया गया है। हालांकि हम संकलन समय पर .d फ़ाइलों को उत्पन्न करने के लिए जीसीसी का भी उपयोग कर रहे हैं जिसे हटाने के लिए भी आवश्यकता होगी। इस बारे में बताने के लिए एक सीधा तरीका नहीं दिखता है।
तो सवाल यह है कि, क्या कोई तरीका है कि हम किसी त्रुटि के मामले में हमारी ऑब्जेक्ट और हमारी निर्भरता फ़ाइलों को हटाने के लिए क्या कर सकते हैं? क्या कोई तरीका है कि हम नियम स्थापित कर सकते हैं ताकि यह जान सके कि .d और .o फ़ाइलों दोनों एक ही समय में उत्पन्न होते हैं और यदि कोई त्रुटि हो तो उन्हें हटाया जाना चाहिए?
वैकल्पिक रूप से, क्या भ्रष्ट .d फ़ाइलों की समस्या को ठीक करने के लिए हम कुछ और कर सकते हैं? इन पंक्तियों के साथ एक सुझाव अस्थायी नाम के साथ .d फ़ाइलों को उत्पन्न करना है और प्रति फ़ाइल एक अलग पोस्ट-संकलन चरण है जो इसे सही नाम पर कॉपी करता है।
मेकफ़ाइल के शीर्ष पर '.DELETE_ON_ERROR:' मुझे अपने सभी tempfiles से छुटकारा पाने दो। धन्यवाद! –
मैं पैटर्न नियम "% .o:% .c" के लिए नुस्खा में दूसरी पंक्ति के रूप में एमवी डालने का सुझाव दूंगा।मुझे पहली पंक्ति में रखने के लिए '' && 'खोलने के लिए व्यवहार या लाभ में कोई बदलाव नहीं दिख रहा है। –
@ रिचर्डपेरिन आपके प्रस्ताव को गलत व्यवहार का उत्पादन करेगा यदि gmake '-i' (त्रुटियों को अनदेखा करें) विकल्प के साथ बुलाया जाता है। उस स्थिति में, आपका संस्करण 'mv' आदेश चलाएगा चाहे 'gcc' में कोई त्रुटि हो या नहीं, जबकि मेरा मूल नहीं होगा। –