2017-03-17 12 views
6

मैं एक्सकोड के साइड-बाय-साइड इंस्टॉलेशन करना चाहता हूं, और उनके बीच चयन करने के लिए DEVELOPER_DIR पर्यावरण चर का उपयोग करना चाहता हूं। इसके लिए लक्ष्य उपयुक्त सी कंपाइलर निर्धारित करने के लिए xcrun -f --sdk macosx clang के परिणाम का उपयोग करना है, और उसके बाद उस स्क्रिप्ट या बिल्ड सिस्टम में उपयोग करें।क्या DEVELOPER_DIR को पर्यावरण में सेट रहने की आवश्यकता है?

CC=$(DEVELOPER_DIR=<something> xcrun -f --sdk macosx clang)

मेरे सवाल यह है कि जब उपकरण xcrun द्वारा पाया का उपयोग कर या के रूप में ऊपर किया जाता है सेट DEVELOPER_DIR आवश्यकताओं के रहते हैं, चाहे वह ठीक बस xcrun के निष्पादन के दौरान यह निर्धारित करने के लिए है, और उसके बाद है के बिना, डिफ़ॉल्ट वातावरण में लौटाए गए टूल का उपयोग करें।

दूसरे शब्दों में, जबकि xcrun स्पष्ट रूप से DEVELOPER_DIR के मान पर निर्भर करता है, तो क्या उपकरण स्वयं भी इस पर निर्भर करते हैं?

  • DEVELOPER_DIR=<whatever> command CC=$(xcrun -f --sdk macosx clang)
  • command CC=$(DEVELOPER_DIR=<whatever> xcrun -f --sdk macosx clang)

दूसरा एक सही है: वहाँ के बीच एक सार्थक फर्क है? या केवल पहला?

उत्तर

1

मैं एक्सकोड के साइड-बाय-साइड इंस्टॉलेशन करना चाहता हूं, और उनके बीच चयन करने के लिए DEVELOPER_DIR पर्यावरण चर का उपयोग करना चाहता हूं।

एक्सकोड के दो या दो से अधिक संस्करण स्थापित करना ठीक है। उनके बीच चयन करने का सामान्य तरीका xcode-select कमांड का उपयोग करना है, लेकिन उस कमांड के लिए मैन पेज ऐसा लगता है कि आप केवल पर्यावरण चर सेट करके वर्तमान सत्र के लिए एक ही चीज़ को पूरा कर सकते हैं। यहां बताया गया है --switch विकल्प के लिए दस्तावेज़ का कहना है:

, दिए गए पथ को सक्रिय डेवलपर निर्देशिका सेट उदाहरण /Applications/Xcode-DP.app के लिए। यह आदेश सुपरसुर अनुमतियों के साथ चलाना चाहिए (सुडो (8) देखें), और सिस्टम पर सभी उपयोगकर्ताओं को प्रभावित करेगा। पथ-आउट सुपरसुर अनुमतियों को सेट करें या केवल वर्तमान शैल सत्र के लिए सेट करें, (पर्यावरण देखें) के बजाय DEVELOPER_DIR पर्यावरण चर का उपयोग करें।

ध्यान दें कि ऐतिहासिक कारण के लिए, डेवलपर निर्देशिका माना जाता है Xcode आवेदन अंदर डेवलपर सामग्री निर्देशिका होने के लिए:

हालांकि, अगर आप भी पर्यावरण खंड में दिए गए सलाह पर ध्यान देना चाहिए (उदाहरण के लिए/अनुप्रयोग /Xcode.app/Contents/ डेवलपर)। आप या तो वास्तविक डेवलपर सामग्री निर्देशिका, या एक्सकोड अनुप्रयोग निर्देशिका - कोड-चयन प्रदान करने के लिए पर्यावरण चर सेट कर सकते हैं बशर्ते शिम्स स्वचालित रूप से पर्यावरण परिवर्तक को पूर्ण डेवलपर सामग्री पथ में परिवर्तित कर दें।

तो अपने प्रश्न में <whatever> पूरा पथ Developer निर्देशिका के लिए, बस नहीं Xcode आवेदन करने के लिए निर्दिष्ट करना चाहिए।

दूसरे शब्दों में, जबकि xcrun स्पष्ट रूप से DEVELOPER_DIR के मान पर निर्भर करता है, तो क्या उपकरण स्वयं भी इस पर निर्भर करते हैं? • DEVELOPER_DIR=<whatever> command CC=$(xcrun -f --sdk macosx clang)

xcrun का उपयोग उपकरणों को खोजने के लिए, ताकि आप उन्हें अपने आप को आह्वान और जब स्थापित करने के लिए और सेट नहीं DEVELOPER_DIR overly जटिल लगता है के बारे में चिंता कर सकते हैं

: वहाँ के बीच एक सार्थक फर्क है। xcode-select दस्तावेज के अनुसार, सभी "shims" DEVELOPER_DIR सेटिंग का सम्मान करते हैं। यहां "शिम्स" /usr/bin में एक्सकोड कमांड को संदर्भित करता है। जब तक कि पर्यावरण परिवर्तनीय सही ढंग से सेट किया गया हो, आप xcrun जो भी पा सकते हैं, उसके बजाय आप '/ usr/bin/clang' का आह्वान कर सकते हैं, और /usr/bin/clang में clang संस्करण से कॉल करेगा। संभवतः, आप इस सवाल से पूछ रहे हैं क्योंकि आप किसी प्रकार की बिल्ड स्क्रिप्ट लिख रहे हैं, इसलिए उस स्क्रिप्ट में को सेट करने में कोई समस्या नहीं होनी चाहिए और फिर केवल /usr/bin कमांड का उपयोग करना चाहिए।

command CC=$(DEVELOPER_DIR=<whatever> xcrun -f --sdk macosx clang)

कार्यक्रम उनके माता पिता प्रक्रियाओं से पर्यावरण के वारिस। यहां आपको उपयोग करने के लिए clang की सही प्रतिलिपि मिल रही है, लेकिन आप इसे ऐसे माहौल में आमंत्रित करेंगे जहां सेट नहीं है। क्या यह मामला इस बात पर निर्भर करता है कि आप जिस उपकरण का उपयोग कर रहे हैं वह किसी भी अन्य उपकरण को आमंत्रित करता है या नहीं। मैं ईमानदारी से नहीं जानता कि कोई भी उपकरण अन्य टूल्स का आह्वान करता है, लेकिन यह तार्किक लगता है कि xcodebuild जैसे टूल में से कई टूल शामिल होंगे और इसलिए पर सही तरीके से सेट किया जा रहा है।

संक्षेप में, वहाँ DEVELOPER_DIR सेटिंग के रूप में अपने निर्माण लिपि में की जरूरत है, और करने के लिए xcrun वैकल्पिक दृष्टिकोण की तुलना में सामान्य रूप में कम विश्वसनीय लगता है केवल अपने कॉल में यह निर्दिष्ट करने के लिए कोशिश कर रहा करने के लिए कोई नकारात्मक पहलू है।

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