इस समस्या को मैंने जिन समाधानों में देखा है उनमें से प्रत्येक या तो अयोग्य (एप्लिकेशन के प्रोजेक्ट में हेडर की नकल करते हुए) प्रतीत हुआ है या अत्यधिक इस बिंदु पर सरल है कि वे केवल तुच्छ परिस्थितियों में काम करते हैं।
संक्षिप्त उत्तर
अपने उपयोगकर्ता शीर्ष खोज पथ में निम्न पथ जोड़ें
"$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
यह काम क्यों करता है?
सबसे पहले, हमें समस्या को समझने की जरूरत है। सामान्य परिस्थितियों में, जब आप रन, टेस्ट, प्रोफाइल या एनालिसिस कहते हैं, तो Xcode आपके प्रोजेक्ट को बनाता है और आउटपुट को बिल्ड / प्रोडक्ट्स / कॉन्फ़िगरेशन / प्रोडक्ट्स डायरेक्टरी में डालता है , जो $ BUILT_PRODUCT_DOM मैक्रो के माध्यम से उपलब्ध होता है ।
स्थैतिक पुस्तकालयों के बारे में अधिकांश मार्गदर्शिकाएँ सार्वजनिक हेडर फ़ोल्डर पथ को $ TARGET_NAME पर सेट करने की सलाह देती हैं , जिसका अर्थ है कि आपकी लिब फाइल $ BUILT_PRODUCS_DIR /libTargetName.a बन जाती है और आपके शीर्षकों को $ BUILT_PRODUCT_DIR / TargetName में डाल दिया जाता है । जब तक आपके ऐप में $ पथ $ BUILT_PRODUCT_DIR शामिल हैं, तब तक उपरोक्त 4 स्थितियों में आयात कार्य करेगा। हालाँकि, जब आप संग्रह करने का प्रयास करेंगे तो यह काम नहीं करेगा।
संग्रह करना थोड़ा अलग तरीके से काम करता है
जब आप किसी प्रोजेक्ट को संग्रहीत करते हैं, तो Xcode संग्रह के एक अलग फ़ोल्डर का उपयोग करता है, जिसे संग्रहित किया जाता है। उस फ़ोल्डर के भीतर आपको / YourAppName / BuildProductsPath / रिलीज़-iphoneos / मिलेगा। यह वह फ़ोल्डर है, जब आप एक संग्रह करते समय $ BUILT_PRODUCT_DIR को इंगित करते हैं। यदि आप वहां देखते हैं, तो आप देखेंगे कि आपकी निर्मित स्टैटिक लाइब्रेरी फ़ाइल में एक सिमलिंक है, लेकिन हेडर वाला फ़ोल्डर गायब है।
हेडर (और लाइब फाइल) को खोजने के लिए आपको इंटरमीडिएटBildFilesPath / UninstalledProducts / पर जाना होगा। याद रखें जब आपको स्थैतिक पुस्तकालयों के लिए YES पर Skip Install करने के लिए कहा गया था ? वैसे यह वह प्रभाव होता है, जब आप एक आर्काइव बनाते हैं।
साइड नोट: यदि आप इसे इंस्टॉल करने के लिए सेट नहीं करते हैं, तो आपके हेडर को अभी तक किसी अन्य स्थान पर रखा जाएगा और लिब फ़ाइल को आपके संग्रह में कॉपी किया जाएगा, जो आपको .ipa फ़ाइल को निर्यात करने से रोकता है, जिसे आप ऐप स्टोर में जमा कर सकते हैं। ।
बहुत खोज के बाद, मुझे कोई भी मैक्रो नहीं मिल सकता है जो अनइंस्टाल्डप्रोडक्ट्स फ़ोल्डर से मेल खाता है, इसलिए "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts" के साथ पथ का निर्माण करने की आवश्यकता है
सारांश
अपनी स्थिर लाइब्रेरी के लिए, सुनिश्चित करें कि आप इंस्टॉल करना छोड़ दें और आपके सार्वजनिक शीर्षकों को $ TARGET_NAME में रखा जाए।
आपके ऐप के लिए, अपने उपयोगकर्ता हेडर खोज पथ को "$ (BUILT_PRODUCS_DIR)" पर सेट करें, जो नियमित बिल्ड के लिए ठीक काम करता है, और "$ (BUILD_ROOT) /../ IntermediateBuildbilesPath / UninstalledProducts", जो संग्रह बनाता है के लिए काम करता है।