Xcode 4 (और निर्भरता) के साथ समस्याओं का संकलन, निर्माण या संग्रह करें


96

यह सवाल पिछले कई हफ्तों से विकसित हुआ है ताकि अधिक सामान्य मुद्दों को कवर किया जा सके (और अपग्रेड प्रोजेक्ट पुराने रूप में रों)।

हालाँकि निर्देशों के एक ही सेट का पालन करके कई मुद्दों को हल किया जा सकता है।

यदि आपके पास निम्न में से कोई समस्या है, तो स्वीकृत उत्तर में विधियों का प्रयास करें:

  • Xcode 4 एक ऐप को संग्रहीत करने में विफल रहता है
  • Xcode 4 एक अनुपयोगी आर्काइव बनाता है
  • Xcode 4 एक .ipa नहीं बनाता है
  • Xcode 4 प्रीप्रोसेसर त्रुटियों के कारण संकलन करने में विफल रहता है
  • Xcode 4 हेडर नहीं ढूँढ सकता
  • Xcode 4 का कोड पूरा काम नहीं कर रहा है
  • परियोजना आश्रितों संकलन नहीं होगा
  • निर्भरता जोड़ने से उपरोक्त किसी भी समस्या का कारण बनता है

मूल प्रश्न

शीर्षक: Xcode 4 में "लेक्सिकल या प्रीप्रोसेसर समस्या फ़ाइल नहीं मिली"

मेरे पास Xcode 4 में एक परियोजना है जो उपकरण और सिम्युलेटर पर ठीक-ठाक निर्माण करेगी और जब स्थिर लाइब्रेरी से जुड़ी हेडर फ़ाइलों की तलाश में है तो इसे पुरालेख में लाने की कोशिश कर रही है:

In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
 #import "Merchant.h"
         ^
1 error generated. 

Xcode त्रुटि देता है

lexical or preprocessor issue file not found 

बहुत Googling ने दिखाया है कि बहुत से लोग इस मुद्दे पर हैं, लेकिन कोई समाधान नहीं है। किसी को भी फिक्स या कोई सुराग मिला।

अपडेट:user header खोज पथ की तैयारी में हैं ${BUILT_PRODUCTS_DIR}सभी विन्यास में। यह संग्रह करते समय किसी भी कॉन्फ़िगरेशन का उपयोग करके ठीक बनाता है।

अद्यतन 2: Merchant.h एक कोर डेटा वर्ग है जो ऑटो-जेनरेट किया गया है और इसलिए .xcdatamodeldपैकेज के अंदर है, हालांकि लाइब्रेरी के निर्माण के दौरान हेडर को सभी सार्वजनिक हेडर निर्देशिका में कॉपी किया जाता है।

जवाबों:


119

NB: नीचे दिए गए चरण आपके Xcode संग्रह के 90% मुद्दों को हल कर देंगे, हालांकि टिप्पणियों से यह सुझाव दिया जाता है कि आप पहले Xcode छोड़ने की कोशिश करें । इससे आपको ट्वीकिंग की सेटिंग के घंटे बच सकते हैं।

  1. "उपयोगकर्ता शीर्ष लेख पथ" सही हैं (अपनी परियोजना और निर्भरता दोनों में, रिक्त स्थान के लिए पथों में "जोड़ें")
  2. "हमेशा उपयोगकर्ता पथ खोजें" हां पर सेट करें
  3. अपनी परियोजना में एक समूह कॉल "इंडेक्सिंग हेडर" बनाएं और हेडर को इस समूह में खींचें, संकेत दिए जाने पर कोई लक्ष्य जोड़ें। इसमें आपके .xcdatamodeld के अंदर कोई भी हेडर शामिल है , आपको उन्हें खोजने के लिए पैकेज सामग्री पर राइट-क्लिक और देखने की आवश्यकता होगी।
  4. सभी निर्भरता के लिए "छोड़ें स्थापित करें" निर्माण सेटिंग को "हां" पर सेट करें
  5. बिल्ड "चरण" में किसी भी "सार्वजनिक" हेडर को "प्रोजेक्ट" पर ले जाना
  6. अपने लक्ष्य पर निर्माण सेटिंग "इंस्टॉलेशन डायरेक्टरी" सेट करें$(LOCAL_APPS_DIR)
  7. "के लिए सभी स्रोत फ़ाइलों को स्कैन करें" को हां करने के लिए लक्ष्य निर्माण सेटिंग बदलें। ( लिंक )
  8. Xcode (> 4.2) के नए संस्करणों के साथ आप कार्यक्षेत्र से संबंधित इस प्रश्न को पढ़ना चाह सकते हैं ।
  9. मैन्युअल रूप से प्रोजेक्ट को हटा दें ।xcworkspace फ़ाइलें सभी संदर्भित प्रोजेक्ट बनाती हैं

28
बहुत ही आखिरी सुझाव मुझे इस मुद्दे को ठीक करने की जरूरत है। Xcode बंद करें और पुनः खोलें।
क्रिस माइल्स

1
हाँ, मेरे लिए एक ही बात, बस Xcode पुनः आरंभ करना था। यह तब हुआ जब मैंने परियोजना में फ़ाइलों का नाम बदला और स्थानांतरित किया।
मौरिजियो

मैं भी। एक बग की तुलना में अधिक निराशाजनक कुछ भी नहीं है जो मौजूद नहीं होना चाहिए। बहुत आसानी से हल हो गया है।
अपराह्न

3
X203 से xcode4 तक पुरानी परियोजनाओं की ओर पलायन करने वाले तीन20 उपयोगकर्ताओं पर ध्यान दें: आपको (may) को लक्ष्य द्वारा निर्दिष्ट स्थान / स्थान / उन्नत / -> स्थान बदलना होगा। अधिक के लिए stackoverflow.com/questions/5261447/… देखें
बेन जी

1
नंबर 1 पर पवित्र बकवास। उद्धरण! पर्यावरण $ (SRC_ROOT) बेशक, रिक्त स्थान के साथ एक मार्ग के साथ "हो सकता है"। पता नहीं क्यों मेरी परियोजना zipping और कहीं और निकालने के एक निर्माण विफलता में हुई!
एरिक केर्बर

13

मुझे XCode 4 में एक ही समस्या थी: "लेक्सिकल या प्रीप्रोसेसर समस्या MyFile.h नहीं मिली"। हालाँकि, MyFile.m एक स्थिर पुस्तकालय नहीं था, सिर्फ एक मानक वर्ग था। और MyFile.m और MyFile.h को परियोजना में ठीक से और अनुक्रमित किया गया था।

इसलिए ... मैंने XCode और सिमुलेटर को छोड़ दिया, फिर उन्हें फिर से शुरू किया और समस्या गायब हो गई।


मेरे पास एक समान स्थिति थी, लेकिन एक असंबंधित संपत्ति को गलत तरीके से संदर्भित करने के कारण प्रदर्शित अवांछित त्रुटि जो एक ही कक्षा में थी (मूल रूप से मैं स्वयं का उपयोग करना भूल गया था।) - अजीब एक।
JARC

11

मैंने पाया कि समस्या तब दूर हो गई जब मैंने लक्ष्य निर्माण सेटिंग को "सभी स्रोत फ़ाइलों को शामिल करने के लिए स्कैन करें" को बिना हां से बदल दिया।


6

मैं किसी भी निर्माण सेटिंग्स में किसी भी परिवर्तन के बिना इस समस्या को हल करने में सक्षम था। केवल खोजक में प्रोजेक्ट की निर्देशिका में .h फ़ाइलों की प्रतिलिपि बनाकर। मैंने उन्हें प्रोजेक्ट में बिल्कुल नहीं जोड़ा। बस उन्हें प्रोजेक्ट के फाइलसिस्टम डायरेक्टरी में होने से Xcode के निहित लिंक को ठीक से काम करने की अनुमति देने के लिए पर्याप्त लग रहा था। अधिक जानकारी यहाँ


+1 मैंने प्रश्न के लिंक को जोड़ दिया है जिसमें उन्होंने उत्तर को स्वीकार कर लिया है, जानकारी के लिए धन्यवाद!
रिचर्ड स्टेलिंग

4

मेरे पास एक अजीब मुद्दा था। "सभी संसाधन फ़ाइलों को स्कैन करें ..." को बदलने से हां में मदद नहीं मिली। मैंने फ्रेमवर्क सर्च पाथ्स पर एक नज़र डाली और देखा कि मेरे पास क्या था

  • $ (विरासत में मिला है)
  • "$ (SRCROOT)"
  • "$ (SRCROOT) / मेरी / सही / पथ"

यह सही लग रहा था लेकिन फिर भी असफल हो रहा था। मैंने तब 2 & 3 के क्रम को फिर से व्यवस्थित करने की कोशिश की और अचानक यह ठीक हो गया। तो यकीन नहीं है कि क्यों वह हिकूप था, लेकिन इसे किसी और की मदद करने के लिए चीजों की सूची में जोड़ना चाहता था।


4

मेरा समाधान मेरे बदलने का था

#import "HeaderFile.h"

सेवा

#import <FrameworkName/HeaderFile.h>

और सब कुछ फिर से काम करना शुरू कर दिया। जो असामान्य था वह यह था कि उसने कुछ समय बाद अचानक काम करना बंद कर दिया था।


मैंने अपने सबप्रोजेक्ट के साथ बाकी सब कुछ करने की कोशिश की और यह एकमात्र ऐसी चीज थी जो काम करेगी। धन्यवाद।
dirkoneill

आपको स्थिर पुस्तकालयों के लिए अभी भी दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए। कोण कोष्ठक सिस्टम हेडर पथों को खोजते हैं और उपयोगकर्ता हेडर पथों की खोज नहीं करेंगे, जब तक कि आप ऑलवेज सर्च यूजर पाथ्स विकल्प को भी सक्षम नहीं करते हैं , जिसे आपको जरूरत नहीं है।
devios1

2

जब मैंने सेट किया तो समस्या का समाधान हो गया

बिल्ड सेटिंग्स-> प्रोजेक्ट-> हां पथ खोजें


2

अपने प्रोजेक्ट (2 लक्ष्य - मैं एक ही था परियोजना और ProjectTest की GHUnit)। जब मेरी योजना परियोजना के लिए स्थापित की गई थी , तो "लेक्सिकल या प्रीप्रोसेसर समस्या फ़ाइल नहीं मिली" की<GHUnitIOS/GHUnit.h> समस्या का आयात किया गया था । लेकिन जब मैंने एक प्रोजेक्ट प्रोजेक्टटेस्ट के रूप में सेट किया , तो सब कुछ ठीक था। तो, मैं जोड़ लिया है में परियोजना भी।GHUnitIOS.framework


मेरे पास उल्टा मुद्दा था। : मेरा उत्तर देखें stackoverflow.com/a/16783389/629014
slcott

1

ऐसा लगता है कि सक्रिय योजना के लिए आपके शीर्ष लेख खोज पथ आपकी बिल्ड सेटिंग्स में ठीक से कॉन्फ़िगर नहीं किए गए हैं। उन्हें सत्यापित करें और वर्तमान सेटिंग के साथ अपने प्रश्न को अपडेट करें।


1

मैं सिम्युलेटर पर समान मुद्दों पर चल रहा हूं, लेकिन डिवाइस और मेरे हेडर खोज पथ फ़ील्ड खाली नहीं हैं (लगता है कि डिफ़ॉल्ट हैं)। लेकिन कार्यक्षेत्र बदलने से समस्या हल हो गई है। हो सकता है कि आप एक नया कार्यक्षेत्र बनाने का प्रयास कर सकें, इसमें अपनी परियोजना जोड़ें और देखें कि क्या मदद करता है। अब मैं जांच कर रहा हूं कि क्यों।


1

मुझे यह "फ़ाइल नहीं मिली" त्रुटि एक विशेष .h फ़ाइल के लिए मेरे प्रोजेक्ट में मिल रही थी। मैंने उस .h फ़ाइल को प्रोजेक्ट से हटाकर ("संदर्भ हटाएं") का चयन करके समस्या को हल कर दिया और इसे फिर से जोड़ दिया।


1

अधिक प्रकार से जोड़ना: मेरे पास निर्माण चरण foo.mमें दो उदाहरण हैं Compile Source, जिनमें से कुछ के लिए "हेडर नहीं मिला" foo.h


1

एक और मौका:

कार्यक्षेत्र प्रोजेक्ट में: निर्माण बिल्ड चरणों के लिए लक्ष्य में देखें। जैसा कि कई मैनुअल कहते हैं कि आपको अपने सभी हेडर को किसी अन्य स्थान पर कॉपी करने के लिए कॉपी फाइल्स बिल्ड फेज की आवश्यकता होती है, क्योंकि iOS फ्रेमवर्क में हेडर फाइलें साझा नहीं की जा सकती हैं (यह मेरा मामला है)।

गंतव्य विकल्प "उत्पाद निर्देशिका" के रूप में उन प्रतिलिपि फ़ाइलों के लिए चुनें। या अपनी तरह की एक और निर्देशिका जहां हेडर निवास करेंगे।

मेरे लिए यही काम किया। संभवतः डीबग के लिए निर्माण में आर्काइव (या रिलीज़) निर्देशिका के लिए निर्माण अपेक्षा से बहुत अलग है।

अपने कार्यक्षेत्र की सेटिंग में अपनी बिल्ड डायरेक्टरी की भी जाँच करें।

एक्सडी


0

मेरे लिए, प्रोजेक्ट में नई फ़ाइलें जोड़ने के बाद यह समस्या हुई; एक रिक्त .m और .h को NSObject से लिया गया है। यहां बताया गया है कि मैंने इसे कैसे हल किया:

  1. बंद और पुनः आरंभ xCode
  2. XCode के माध्यम से दो नई फ़ाइलों को हटा दिया गया
  3. सफलतापूर्वक आवर्ती

मैंने बाद में उन्हें फिर से जोड़ा और यह भी काम कर गया।

निश्चित रूप से xCode में एक बग ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.