2009-07-07 11 views
5

मैंने परियोजनाओं के बीच कोड साझाकरण सेट अप करने के लिए Clint Harris' tutorial का उपयोग किया है, और सब कुछ मेरे कंप्यूटर पर अपेक्षित काम करता है। लेकिन मेरे सहकर्मी की मशीन पर, ऐसा लगता है कि संकलक को स्थिर लाइब्रेरी प्रोजेक्ट से हेडर फ़ाइल नहीं मिलती है जब वह बनाता है।स्थिर लाइब्रेरी हेडर क्यों नहीं पाए जाते हैं?

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

यह वही है मैं अपने सह कार्यकर्ता से कहा कि ऐसा करने के लिए, ज्यादातर की नकल की और ट्यूटोरियल से चिपकाया है:

  1. यकीन है कि वहाँ है परियोजनाओं 'निर्देशिका पूर्ण पथ में कोई रिक्त स्थान बनाओ।
  2. प्रोजेक्ट निर्देशिका के अंदर, "build_output" नामक एक और फ़ोल्डर बनाएं।
  3. एक्सकोड में, "एक्सकोड> प्राथमिकताएं" के तहत "बिल्डिंग" टैब चुनें और "अनुकूलित स्थान" में "प्लेस बिल्ड प्रोजेक्ट" सेट करें और आपके द्वारा बनाई गई सामान्य बिल्ड निर्देशिका के पथ को निर्दिष्ट करें।
  4. "निर्माण उत्पादों के साथ" में "प्लेस इंटरमीडिएट बिल्ड फाइलें" सेट करें।
  5. "स्रोत पेड़" टैब चुनें और "+" बटन पर क्लिक करके और कॉलम भरकर एक नया स्रोत ट्री वैरिएबल बनाएं। "सेटिंग नाम" और "प्रदर्शन नाम" दोनों में, [साझा प्रोजेक्ट का नाम जो स्थैतिक पुस्तकालय बनाता है] डाल दें। पथ में, आप फ्रेमवर्क फ़ोल्डर में पूरा पथ डालते हैं।

इन चरणों के बाद, स्थैतिक पुस्तकालय का उपयोग करने वाली परियोजना को अपनी मशीन पर उसी तरह संकलित करना चाहिए। लेकिन ऐसा नहीं है। असल में, वह जो त्रुटि प्राप्त करती है वह है:

error: TheFrameworkHeader.h: No such file or directory 

और फिर अनुपलब्ध शीर्षलेख के कारण अन्य त्रुटियों की एक स्ट्रिंग।

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

उत्तर

8

कुछ सहायक सलाह के बावजूद, मैंने इसे कभी नहीं देखा, लेकिन यहां एक समान स्थिति में किसी के लिए थोड़ी सी जानकारी है। मैंने पुस्तकालय और आश्रित परियोजना को मूल पी को विभाजित करके बनाया है। दो में घुमाओ। सबसे पहले, पुस्तकालय और आवेदन एक ही परियोजना के भीतर केवल दो लक्ष्य थे। बाद में, मैंने ऐप को एक अलग परियोजना में ले जाया।सब कुछ काम करना प्रतीत होता था, और मैंने दोनों परियोजनाओं को दूरस्थ गिट भंडारों में धक्का दिया। जब इन्हें अन्य कंप्यूटरों पर क्लोन किया गया, हालांकि, लाइब्रेरी हेडर नहीं मिला।

बाद में, मुझे पता चला कि एक ही त्रुटि तब हुई जब मैंने मूल कंप्यूटर पर परियोजनाओं को क्लोन किया। बहुत सारे संघर्ष के बाद, मैंने इसे एक डरावनी विस्तार से नीचे पिन किया: आश्रित परियोजना के फ़ोल्डर का नाम! (यानी, एप्लिकेशन के साथ प्रोजेक्ट, लाइब्रेरी नहीं है।) .xcodeproject पैकेज का नाम नहीं, एप्लिकेशन पहचानकर्ता नहीं, लेकिन का नाम फ़ोल्डर है। जैसे ही मैं इसे बदलता हूं, सब कुछ काम करता है। अगर मैं इसे मूल नाम (किसी भी कंप्यूटर पर) में बदल देता हूं, तो फिर हेडर नहीं मिलते हैं।

अगर किसी के पास इस पर कोई अंतर्दृष्टि है, तो कृपया एक उत्तर पोस्ट करें!

संपादित करें: चूंकि मैंने इसे पोस्ट किया है, वही समस्या किसी अन्य प्रोजेक्ट के साथ हुई है, और फिर, केवल उस फ़ोल्डर को नामित करना जिसमें .xcodeproject फ़ोल्डर शामिल है, समस्या को हल करता है।

+0

मैं बस वही हुआ था। 'चीनीजोडियाक' == खराब। 'राशि चक्र' == अच्छा। WTF? –

+0

इससे हम तीनों को बनाते हैं। शायद एक बग फाइल करने के लिए समय। मेरे सिरदर्द को ठीक करने के लिए – Felixyz

+0

+1। – hwaxxer

0

यदि आपको किसी विशेष मशीन पर निर्माण करने में समस्या हो रही है, तो समस्या की संभावना मशीन या उपयोगकर्ता सेटिंग है। जैसे कि environment variable (शायद INCLUDE_PATH या उसके रिश्तेदारों में से एक - एक्सकोड जीसीसी का उपयोग करता है)। आपके पास "।" हो सकता है इन चरों में से एक में।

इसे ठीक करने का सबसे अच्छा तरीका यह है कि बिल्ड स्क्रिप्ट में स्विच करने के लिए आवश्यक फ़ोल्डर पथ जोड़ना होगा।

+0

धन्यवाद, लेकिन मैंने "उपयोगकर्ता शीर्षलेख खोज पथ" को सही तरीके से सेट करने के लिए एक्सकोड में लक्ष्य पर बिल्ड पैनल का उपयोग किया है (नाम सेट अप का उपयोग करके एक्सकोड की वरीयताओं में स्रोत पेड़ सेटिंग्स में), और यह सब मैंने अपने देव बॉक्स पर काम करने के लिए किया है। (मैंने "अन्य लिंकर ध्वज" को -ओबीजेसी पर भी सेट किया है।) अब मैंने इसे तीसरे कंप्यूटर पर आजमाया है, और केवल एक ही जिस पर यह काम करता है वह मूल देव बॉक्स है। – Felixyz

0

मैं अक्सर यह जांचना भूल जाता हूं: क्या आप सुनिश्चित हैं कि गायब फ़ाइल (यानी, TheFrameWorkHeader.h "गिट भंडार में है? यह अच्छी तरह से हो सकता है कि आपकी बिल्ड सेटिंग्स सही हैं, लेकिन फ़ाइल किसी भी तरह से नहीं जोड़ा गया सही ढंग से गिट करने के लिए।

+0

नहीं, यह भंडार में चेक किया गया है। – Felixyz

0

दो बार जांचें कि "खोज पथ-> उपयोगकर्ता शीर्षलेख खोज पथ" निर्माण सेटिंग (सभी कॉन्फ़िगरेशन के लिए) साझा एक्सकोड प्रोजेक्ट वाली निर्देशिका को इंगित करती है (आप अपने द्वारा बनाए गए नए स्रोत वृक्ष चर का उपयोग कर सकते हैं)

+0

बहुत धन्यवाद, लेकिन मैंने पहले ही यह जांच लिया था और हर दूसरे कल्पनीय सेटिंग को दर्जन बार सेट किया था। मुझे अभी भी पता नहीं है कि क्या गलत था, लेकिन थोड़ी सी जानकारी साझा करने के लिए सवाल संपादित करेंगे। – Felixyz

+0

इसके बजाए एक नया उत्तर जोड़ा गया, इसलिए प्रश्न को अनुत्तरित के रूप में चिह्नित नहीं किया जाएगा। – Felixyz

2

मुझे नहीं लगता कि यह गिट है, मुझे लगता है कि यह xcode है। मुझे यहां एक बहुत ही समान समस्या मिली है, जहां xcode/xcodebuild पथ को गलत तरीके से शामिल करता है (इसे सरल बना रहा है।) बिल्कुल वही लाइब्रेरी प्रोजेक्ट और xcconfig फ़ाइलें (svn repo से साफ़ चेकआउट) के साथ, लेकिन दूसरा फ़ोल्डर है - यह काम करता है। तो, समाधान के लिए thanx और अब गिट को दोष नहीं देते ;-)

+0

नहीं, गिट अब संदिग्धों में से एक नहीं है :) यह अभी भी स्पष्ट नहीं है कि एक्सकोड भ्रम का कारण बनता है। प्रोजेक्ट फ़ाइल में किसी प्रकार की मेटा-जानकारी होना चाहिए? – Felixyz