मैं संकुल संकलित कर रहा हूं और मुझे लगता है कि कई बार मेकफ़ाइल लेखक इस तरह के और विकल्पों के साथ मेकफ़ाइल में सेट CFLAGS लिखते हैं। दूसरी तरफ, मैं कुछ कंपाइलर अनुकूलन का प्रयास करना चाहता हूं और जितना संभव हो उतना कम परेशानी के साथ कंपाइलर स्विच को प्रचारित करना चाहता हूं। हालांकि यह हमेशा करने योग्य नहीं है। उदाहरण के लिए जब एक मेकफ़ाइल CFLAGS निर्दिष्ट करता है और मैं सभी सी कंपाइलर इनवोकेशन का उपयोग करना चाहता हूं -फॉमिट-फ्रेम-पॉइंटर, CFLAGS=-fomit-frame-pointer make
जैसे कुछ स्पष्ट रूप से लिखने के लिए, मेरे विकल्प क्या हैं जो हैकिश नहीं हैं। मैं क्या देख सकते हैं ऊपर है से, फिर वहाँ एक ही लेकिन अलग make "CFLAGS=-fomit-frame-pointer"
है और मैं भी मैं क्या सबसे अच्छा समाधान और इस प्रश्न के लिए कारण पर विचार कर सकते हैं:पर्यावरण चर क्यों डिफ़ॉल्ट रूप से मेकफ़ाइल में सेट चर को ओवरराइड नहीं करते हैं?
export CFLAGS=-fomit-frame-pointer
make -e
मैं इस सबसे अच्छा विचार करें एक, क्योंकि स्पष्ट रूप से संभावित रूप से खतरनाक ध्वज भी सोचा था, मैं सॉफ़्टवेयर को बहुत अधिक डीबग नहीं करता हूं, और जब मुझे आवश्यकता होती है तो मैं डिबगिंग जानकारी और सभी के साथ मांग पर किसी विशेष टुकड़े को पुन: संकलित कर सकता हूं। अन्यथा मैं रिलीज सॉफ़्टवेयर के साथ घंटी और सीटी को डिबग किए बिना काम करना पसंद करता हूं, खासकर अगर पैकेज मेरे द्वारा लिखित नहीं है। तो मुझे लगता है कि मैं यहां जो कुछ पूछता हूं वह विशेष रूप से है: क्यों मेकफ़ाइल के लिए पर्यावरण चर को स्वचालित रूप से पसंद नहीं करते हैं? सभी पर्यावरण के बाद सबसे अच्छा जानता है कि क्या है, और अगर लेखक को वास्तव में कुछ रास्ता चाहिए तो 'ओवरराइड' वाक्यविन्यास सही है?
बनाने के लिए एक पैरामीटर है: - पर्यावरण-ओवरराइड जो आप वर्णन करते हैं, मुझे लगता है, तो हो सकता है कि आप इसे "रैपिंग" द्वारा एक स्क्रिप्ट के साथ डिफ़ॉल्ट बना सकें जो वास्तविक पर्यावरण के साथ वास्तविक बनाता है -Wrrides FWIW – rogerdpack