2012-12-12 11 views
6

FOO=bar ./configure और ./configure FOO=bar के बीच अंतर क्या हैं, जहां ./configureconfigure.am से ऑटोकॉन्फ़ द्वारा उत्पन्न एक स्क्रिप्ट है? मुझे पता है कि पूर्व स्क्रिप्ट ./configure स्क्रिप्ट चलाने से पहले पर्यावरण परिवर्तनीय FOObar सेट करता है, और बाद वाला स्ट्रिंग FOO=bar./configure को पास करता है। मुझे लगता है कि ./configure यह व्याख्या करता है (और इसे याद करता है?) परिवर्तनीय FOObar के बराबर सेट करने के रूप में, लेकिन इससे परे, मुझे नहीं पता। विशेष रूप से, क्या इसे एक या दूसरे तरीके से करने के कोई फायदे हैं?ऑटोकॉन्फ के '।/Config`

उत्तर

6

एक तर्क के रूप में configure पर असाइनमेंट पास करने से यह सुनिश्चित होता है कि असाइनमेंट config.status में उपलब्ध है, इसलिए इसे config.status --recheck पर सेट किया जाएगा। यह असाइनमेंट को तर्क के रूप में बनाने का प्राथमिक लाभ है। ध्यान दें कि वर्तमान autoconf दस्तावेज पर्यावरण के माध्यम से असाइनमेंट पारित करने की सिफारिश करता है। ऑटोकॉन्फ के पुराने संस्करणों को कॉन्फ़िगर करने के लिए तर्क के रूप में असाइनमेंट करने की अनुमति नहीं दी गई थी, इसलिए पुराने कॉन्फ़िगर स्क्रिप्ट चलाने पर पुराने फॉर्म का उपयोग करना आवश्यक है, और आदतें मर जाती हैं ताकि बहुत से लोग पर्यावरण का उपयोग जारी रख सकें। हालांकि, तर्कों के माध्यम से असाइनमेंट पास करना एक अच्छी आदत है।

+0

'AC_ARG_VAR' के लिए दस्तावेज़ में _precious variables_ की परिभाषा भी देखें। इस तरह से 'कॉन्फ़िगरेशन' ट्रैक करता है कि किस पर्यावरण चर को '--recheck' के लिए संरक्षित किया जाना चाहिए, या जिसका परिवर्तन किसी कॉन्फ़िगरेशन कैश को अमान्य कर देना चाहिए। – adl

संबंधित मुद्दे