क्या आपके लिए सामान्य नियम है जब आपको सिर्फ 'मेक' के बजाय 'मेक क्लीन' का उपयोग करना चाहिए?


11

मैं अभी एक कई-दायर कार्यक्रम लिख रहा हूं, और जाहिर तौर पर केवल 'मेक' चल रहा है (जैसा कि किसी भी स्थिति में सहज रूप से सबसे स्थितियों में किए जाने की जरूरत है) किसी कारण से मेरा कार्यक्रम विफल हो जाता है। मुझे लगता है कि मैं समस्या का अधिक विवरण प्रदान कर सकता हूं, लेकिन महत्वपूर्ण बात यह है कि यह 'मेक क्लीन' का उपयोग करते समय चलता है। इसलिए मैं सोच रहा था कि क्या किसी को सिर्फ 'मेक' के बजाय 'क्लीन' चलाने के लिए अंगूठे के सामान्य नियम का पता था

जवाबों:


17

आप दो स्थितियों में सफाई करते हैं - जब आप स्रोत कोड को पैकेज करना चाहते हैं (और इसलिए निर्मित वस्तुओं की आवश्यकता नहीं है / चाहते हैं) या जब आपके पास यह मानने का कोई कारण हो कि निर्मित वस्तुएं खराब हैं।

आपके मामले में, आप एक समस्या को हल करने के लिए 'मेक क्लीन' का उपयोग कर रहे हैं, जो कि छोटी गाड़ी मेकफाइल का परिणाम है। जब ऐसा होना चाहिए तो कुछ भी फिर से संकलित नहीं हो रहा है और इससे आउटपुट बाइनरी खराब हो रहा है।

ऐसे कई कारण हैं जो आपके प्रोजेक्ट की जटिलता और आपके द्वारा किए गए उपयोग के आधार पर हो सकते हैं, लेकिन इसका सार यह है: आपको अपने मेकफाइल को डीबग करने में कुछ समय बिताने की आवश्यकता है।


6
आप "बिल्ड इनवायरमेंट में कुछ बदलाव" भूल जाते हैं जैसे कि अपग्रेडेड कंपाइलर, लाइब्रेरियों के नए वर्जन आदि इन मामलों में हमेशा "साफ-सुथरा" बनाने का एक अच्छा विचार है बस यह सुनिश्चित करने के लिए कि सभी मॉड्यूल एक ही गाने की शीट से गा रहे हैं!
जेम्स एंडरसन

2
@ जेम्सएर्ससन एक तर्क दे सकता है कि ये छोटी गाड़ी मेकफाइल्स के उदाहरण हैं।
क्रिस्टोफ़ प्रोवोस्ट

4
@ क्रिस्तोफ्रोवोस्ट: मुझे यकीन नहीं है कि मैं "न्यू एबीआई" (संभवतः एक नए संकलक संस्करण की शुरुआत करके) को 'बग्गी मेकफाइल' के रूप में वर्गीकृत करूंगा। यह पर्याप्त रूप से उस दायरे से बाहर है जो मैं देखने के लिए 'बनाने' की उम्मीद कर रहा था।
वेटिन

1
सच है, लेकिन यह संभव है (और यह भी मुश्किल नहीं है) कंपाइलर को पूर्वापेक्षा के रूप में मेकाइल में जोड़ना। यह समस्या को पकड़ने के लिए पर्याप्त है। सब सब में यह एक बड़ा मुद्दा नहीं है और यह वैसे भी बहुत दुर्लभ है। मैंने मुद्दा इसलिए बनाया क्योंकि मैंने (और लिखित) मेकफाइल्स का उपयोग किया है जो संकलक झंडे और इस तरह के खाते में ले जाता है। यह भी Makefiles में काफी असामान्य है, लेकिन बहुत उपयोगी (संकलक की जाँच से अधिक है;))। अच्छे, अच्छे लिखित मेकफाइल्स की मेरी उम्मीदें काफी अधिक हैं। औसत मेकफाइल की मेरी उम्मीदें कम हैं ...
क्रिस्टोफ़ प्रोवोस्ट

8

मैं सामान्य तौर पर माइकल कोहेन के जवाब से सहमत हूं। मुझे लगता है कि आपको यह जानने के लिए इंस्टॉलेशन डॉक्स पढ़ने की जरूरत है कि वास्तव में क्या "स्वच्छ बनाते हैं"। स्वच्छ के विभिन्न स्तर हो सकते हैं जिन्हें आपको उपयोग करने की आवश्यकता हो सकती है, जैसे कि "वास्तविक बनाने के लिए" और "अंतर बनाने के लिए।" इनके लिए अनौपचारिक सम्मेलन हैं, लेकिन पत्थर में कुछ भी नहीं खुदा हुआ है।


2
+1: "आपको यह जानने के लिए इंस्टॉलेशन डॉक्स को पढ़ने की जरूरत है कि" वास्तव में क्या करता है "साफ करें"। कोई "सामान्य नियम" नहीं है। आपको वास्तव में डॉक्स पढ़ना होगा।
एस.लॉट

5

मैं समझता हूं कि यह आपकी परियोजना है, इसलिए यह आपकी है makefile। मेरा लक्ष्य make हमेशा एक सही निर्माण करना है, अगर यह संभव है कि एक उत्पादन किया जाए। यदि make cleanकुछ हालत से उबरना आवश्यक है, तो मेरी राय में makefileयह गलत है, और इसे ठीक किया जाना चाहिए। यदि आपकी निर्भरता सही तरीके से गणना की गई है, तो एक साधारण makeको हर उस चीज को फिर से स्थापित करना चाहिए जिसे पुन: स्थापित करने की आवश्यकता है।


2
मैं सहमत हूँ। लगभग अनंत डिस्क स्थान के इन दिनों में यह कोई समस्या नहीं है, लेकिन जब मैं स्वच्छ और बनाने के लिए पर्याप्त रूप से याद कर रहा हूं, तो मुख्य रूप से लिंक किए गए निष्पादन योग्य बनाने के बाद डिस्क स्थान को बचाने के लिए उपयोग किया जाता है। GCC बनाना, अपाचे, पर्ल, आदि के आसपास बहुत सारा सामान रखा गया।
बिल रुपेर्ट

1

मैं एक रात के निर्माण से पहले "स्वच्छ बनाऊंगा"। उस मामले में एक पूर्ण निर्माण करने में जो अतिरिक्त समय लगता है वह शायद ज्यादा मायने नहीं रखेगा, लेकिन अतिरिक्त सुरक्षा आपको यह सुनिश्चित करने से मिलेगी कि सब कुछ सही संस्करण में है शायद यह इसके लायक है।


यह आपके प्रोजेक्ट के आकार पर निर्भर करेगा। जहां मैं एक वृद्धिशील निर्माण कार्य करने के लिए उपयोग करता हूं, रात भर में खींची गई अन्य साइटों से परिवर्तन के साथ 2-4 घंटे लगेंगे। एक साफ निर्माण में 7 से 9 घंटे लग सकते हैं। उसके ऊपर हमारी कभी-कभी 2 या 3 शाखाएँ होती हैं जिन्हें हम बनाना चाहते हैं। यहां तक ​​कि फास्ट मशीनों पर, बहुत बड़े कोड बेस को छोटे लोगों के लिए काफी अलग तरीके से इलाज की आवश्यकता होती है।
TafT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.