2013-10-10 6 views
6

मैं एक कार्यक्षेत्र, Application.xcworkspace, कि दो चौखटे बनाता है और एक निष्पादन उन चौखटे का उपयोग करता है। यहाँ मोटे तौर पर है कि वे किस तरह से बाहर रखा जाता है:XCode फ्रेमवर्क संदर्भ पथ और बिल्ड आउटपुट निर्देशिका

  • Framework_1 - निर्मित और बदसूरत DerivedData पथ के लिए उत्पादन।

  • फ्रेमवर्क_2 - फ्रेमवर्क_1 पर निर्भर करता है, जो प्रोजेक्ट के फ्रेमवर्क क्षेत्र में शामिल है और "लाइब्रेरी के साथ लिंक बाइनरी" बिल्ड फेज में निर्दिष्ट है, और आउटपुट को बदसूरत डेरिवेटाटा पथ में निर्दिष्ट किया गया है।

  • आवेदन - फ्रेमवर्क_1 और फ्रेमवर्क_2 पर निर्भर करता है, जो परियोजना के फ्रेमवर्क क्षेत्र में शामिल हैं और "लाइब्रेरी के साथ लिंक बाइनरी" बिल्ड चरण में निर्दिष्ट हैं। आउटपुट निर्देशिका फिर से बदसूरत DerivedData पथ है।

समस्या मेरे पास है

कि संदर्भित चौखटे के लिए प्रोजेक्ट फाइल में पथ DerivedData बदसूरत पथ होते हैं - वे ../../Library/Developer/XCode/DerivedData/Application-longuglyuniquestring/ की तरह हैं निर्माण/उत्पाद/रिलीज/Framework_1.framework।

अगर मैं एक और निर्देशिका के लिए स्रोत की प्रतिलिपि, या संस्करण नियंत्रण में जाँच और एक अन्य मशीन के लिए चेक करें, तो उन ढांचे रास्तों अब वैध नहीं हैं। वे फिर से उत्पन्न हो जाते हैं। संदर्भित ढांचे परियोजना में लाल के रूप में दिखाई देते हैं।

  • कार्यक्षेत्र का निर्माण - Framework_1 बनाता है:

    अब तक, जब मैं किसी अन्य फ़ोल्डर में कार्यक्षेत्र का निर्माण करना चाहते, जिस तरह से मैं इस समस्या तय कर दी है के लिए है।

  • कि ढांचे के लिए "उत्पाद" नोड के लिए
  • जाओ और खोजक में यह दिखा।
  • नई बदसूरत पथ की प्रतिलिपि बनाएँ।
  • फ्रेमवर्क_2 और एप्लिकेशन के लिए प्रोजेक्ट फ़ाइलों को खोलें और फ्रेमवर्क_1 और फ्रेमवर्क_2 के लिए पथ को सही करें।
  • सभी लाल वस्तुओं सुलझाया जाना चाहिए और सब कुछ का निर्माण करना चाहिए।

यह प्रक्रिया कठिन है और मैं भाग्यशाली हूं कि प्रोजेक्ट फ़ाइल संपादित की जा सकती है। यह सहयोगियों कि थोड़ा मैं परियोजना फ़ाइलों के बारे में पता है समझ में नहीं आता, और सिर्फ कोड की जाँच और इसे बनाने के लिए चाहते हैं के लिए बुरा है।

क्या फ्रेमवर्क के लिए बिल्ड आउटपुट निर्देशिका में मुझे कुछ करने की ज़रूरत है? बदसूरत पथ की सिफारिश की जाने के बाद से मैं इसे बदलने की झुकाव कर रहा हूं। क्या कोई कॉपी फाइल विकल्प है जिसका उपयोग मैं उन कार्यक्षेत्रों को अपने कार्यक्षेत्र के सापेक्ष कुछ अनुमानित स्थान में रखने के लिए कर सकता हूं?

किसी भी मदद की सराहना की जाएगी। मुझे यकीन है कि मुझे कुछ आसान याद आ रहा है - यह कोई समझ नहीं आता है कि स्रोत नियंत्रण से कोड की जांच की गई है या किसी अन्य निर्देशिका में कॉपी की गई है, न केवल निर्माण करेगी।

+0

के रूप में मैं एक '.dylib' और' .app' के साथ एक कार्यक्षेत्र है और वे दोनों एक ही फ़ोल्डर में डाल रहे हैं यही कारण है कि असामान्य है ('.../DerivedData /.../ निर्माण/उत्पाद/Debug')। मेरे पास '.app'' की प्रतिलिपि बनाने के लिए '.app' बिल्ड के हिस्से के रूप में '.app/संसाधन/फ्रेमवर्क' निर्देशिका में एक स्क्रिप्ट है। – trojanfoe

+0

ऐप आउटपुट के साथ कोई समस्या नहीं - सभी आवश्यक ढांचे को ऐप/फ्रेमवर्क निर्देशिका में रखा जाता है। यह एक बिल्ड-टाइम समस्या है। "फ्रेम बाइनरी विद लाइब्रेरीज़" बिल्ड फेज में उपयोग किए गए फ्रेमवर्क बाइनरी, ऐप DerivedData निर्देशिका में हैं। जब परियोजना किसी भिन्न निर्देशिका से बनाई जाती है तो वह निर्देशिका बदल जाती है। सभी प्रोजेक्ट फाइल/स्रोत रूट के तहत एक निर्देशिका के अंतर्गत हैं। अगर मैं उन्हें दूसरी निर्देशिका में कॉपी करता हूं, तो परियोजना नहीं बनाई जाएगी क्योंकि लिंकिंग के लिए लाइब्रेरी पथ अलग होंगे। – GTAE86

+0

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

उत्तर

2

ऐसा लगता है कि एक प्रति कार्यक्षेत्र के आधार पर DerivedData निर्देशिका स्थापित करने के लिए एक तरीका है की तरह - Xcode 4 - build output directory

मैं सिर्फ DerivedData सेट मेरी कार्यक्षेत्र के सापेक्ष हो सकता है, तो संपादित परियोजना के हिसाब से फ़ाइलें। एकमात्र डाउन-साइड यह है कि अगर मैं उन परियोजनाओं में से किसी एक को अन्य वर्कस्पेस में उपयोग करना चाहता था जो डिफ़ॉल्ट DerivedData पथ का उपयोग कर रहा था, तो मुझे उन्हें वापस बदलना होगा।

उपयोगकर्ता DaGaMs बहुत धन्यवाद - वह एक वोट दें मिला है।

मैं अभी भी XCode 5 से बुरा व्यवहार देख रहा हूँ: मैं अपने मशीन पर काम परियोजना मिला है। इसे किसी अन्य, निचले, निर्देशिका में कॉपी किया और सत्यापित किया कि यह अभी भी काम करता है। बाहर एक्सकोड और युक्त निर्देशिका को नेटवर्क ड्राइव में कॉपी किया गया, और वहां से दूसरे मैक पर। जब मैंने इसे अन्य मैक पर खोला तो ऐसा था कि मैंने कभी भी कुछ बदलाव नहीं किए। इससे भी बदतर, जैसा कि मैंने इसे ठीक करने के लिए काम किया था, एक्सकोड पागल हो गया और मेरे FRAMEWORK_SEARCH_PATHS पथों के प्रत्येक छोर पर 6 अतिरिक्त '\' वर्ण जोड़े! समस्या का

भाग मेरे ऐप बल्कि रिश्तेदार से पूर्ण होने में subproject निर्देशिका से उपजी है। वर्कस्पेस के शीर्ष में प्रोजेक्ट "समूह से संबंधित" हैं, इसलिए मैंने उपप्रोजेक्ट को एक ही विशेषता रखने के लिए बदल दिया। ऐसा लगता है कि समस्या हल हो गई है, हालांकि किसी कारण से जब मैं सभी फाइलों को दूसरी मशीन पर कॉपी करता हूं, तो व्युत्पन्न डेटा पुनर्निर्देशन इसके साथ नहीं जाता है।

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