PCH त्रुटि कैसे ठीक करें?


132

जब मैं अपना ऐप बनाने की कोशिश करता हूं Xcode, तो मुझे यह त्रुटि संदेश मिलता है:

पीसीएच फ़ाइल संकलक की तुलना में एक अलग शाखा ((क्लैंग -425.0.24)) से निर्मित ((क्लैंग -425.0.27))

यह पहले नहीं होता है, लेकिन Xcode अपडेट करने के बाद यह पहला निर्माण था।

अन्य एप्लिकेशन काम करते हैं, लेकिन यह विशिष्ट नहीं है।

अगर मैं "Precompile Prefix Header"सेटिंग बंद कर देता हूं , तो यह काम करता है।

मैं इस त्रुटि को कैसे ठीक करूं और अभी भी उस सेटिंग को चालू रखूं?

जवाबों:


246

यह अक्सर एक कैशिंग समस्या है। आमतौर पर यह विकल्प कुंजी को दबाकर और उत्पाद> क्लीन बिल्ड फोल्डर चुनकर हल किया जा सकता है ...


3
इससे मेरे लिए त्रुटि ठीक नहीं हुई। मैंने एक पूर्ण स्वच्छ प्रदर्शन किया है और व्युत्पन्न डेटा को हटा रहा है।
बेन एस

6
मेरे लिए काम किया, सिवाय इसके Product> Cleanऔर कमांड कुंजी की कोई आवश्यकता नहीं थी। (Xcode 4.6.1)
स्टीव हेली

1
@SteveHaley एक है Product > Clean, लेकिन यह एक कम पूरी तरह से काम करता है। कुछ लोगों के साथ खरीद सकते हैं Product > Clean, के लिए सबसे Product > Clean Build Folder...पर्याप्त है, और दूसरों को मैनुअल हटाने की जरूरत है जैसा कि नीचे दिए गए @ जवाब में संकेत दिया गया है।
Gaige

7
मुझे इसका पुराना सवाल पता है, लेकिन उपर्युक्त तय ने मेरी मदद नहीं की। बस व्युत्पन्न डेटा को हटाने और परियोजना के निर्माण से फिर से ठीक काम करता है।
अंकित जैन

2
क्या आप सिर्फ rm -rf / ios / build कर सकते हैं?
सुपरब्यूपर

47

DerivedDataप्रोजेक्ट के लिए फ़ोल्डर हटाएँ । Xcode प्राथमिकताओं के तहत देखें -> यह देखने के लिए स्थान कि आप इसे कहाँ सहेजते हैं।


यह ध्यान रखना महत्वपूर्ण है कि DerivedDataजरूरी नहीं कि आपका Buildफ़ोल्डर कहां है, इससे मुझे बहुत मदद मिली, धन्यवाद!
निट

1
के moduleCacheअंदर DerivedDataभी हटाएँ
whtlnv

जैसा कि अन्य उत्तर कहते हैं, आपको पहले "साफ़" करने का प्रयास करना चाहिए। जब यह काम नहीं करता है, मैं बस पूरी तरह से पूरी DerivedDataफ़ोल्डर को हटा देगा ... "ऑर्बिट से nuke ... केवल सुनिश्चित होने का तरीका।" @whitelionV यह भी rm moduleCacheऔर बाकी सब वहाँ होगा।

39

ऐसा लगता है कि उत्पाद> क्लीन बिल्ड फोल्डर ... (विकल्प कुंजी के साथ दबाया गया) अधिकांश लोगों के लिए काम करता है। चयनित उत्तर को @gaige द्वारा देखें।

यदि आप अधिकांश लोगों (खुद शामिल) के विपरीत हैं और इससे आपको परेशानी होती है तो XCode ने आपके साझा किए गए हेडर को कहीं और छोड़ दिया है। मेरे लिए वे इसी के समान एक फ़ोल्डर में थे:

/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders

मैंने अभी पूरा SharedPrecompiledHeaders फ़ोल्डर हटा दिया है और मेरे लिए चीजें हल हो गई हैं। मैं यहाँ में बहुत अधिक छू नहीं जाना होगा, हालांकि ...


2
इसने मेरे लिए यह समस्या तय कर दी। मेरे लिए यह इसलिए है क्योंकि मेरे पास कमांड-लाइन संचालित बिल्ड है।
थॉमस डब्ल्यू २१'१३

2
यदि यह आपका मामला है तो आप उस फ़ोल्डर को Xcode बिल्ड ट्रांसक्रिप्ट में पा सकते हैं। मैं "SharedPrecompiledHeaders" स्ट्रिंग के लिए देखा
जोस मैनुअल Sánchez

6
हां, यह सही समाधान है। विशेष रूप से यदि आप कमांड लाइन से निर्माण करते हैं या आपके पास एक बिल्ड स्क्रिप्ट है। Precompiled हेडर स्थान बिल्ड सेटिंग्स, "बिल्ड लोकेशन" में मिल सकता है -> Precompiled हेडर कैश्ड पथ।
करीम

आपको var डायरेक्टरी कैसे लगती है?
गोल्डनजॉ डे

1
@GoldenJoe फ़ाइंडर खोलें, Shift-Cmd-Gऔर प्रकार/var
Sedes

23

Xcode प्राथमिकताएं-> स्थान (जैसा कि wcochran द्वारा उत्तर में बताया गया है) पर जाएं और बस अपने DerivedData फ़ोल्डर का नाम बदलें। मैंने बस "DerivedData" से "DerivedData2" में बदल दिया और इस प्रणाली को पुराने स्थान को संदर्भित करने से रोकने के लिए मजबूर किया। यह मेरे लिए तब तय हुआ जब अन्य जवाबों में से किसी ने भी काम नहीं किया। तस्वीर देखें:

यहाँ छवि विवरण दर्ज करें


15

अन्य विकल्पों में से कोई भी मेरे लिए काम नहीं करता है, यहाँ यह तय है:

मैंने कैश फ़ोल्डर को हटा दिया /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/(इसका नाम बदलकर भी काम करता है)।

त्रुटि में वर्णित फ़ोल्डर को हटाने का प्रयास करें, यदि आपकी त्रुटि कुछ इस तरह दिखती है:

PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8


हाँ आप सही है। उपरोक्त में से कोई भी मेरे लिए काम नहीं करता है। बस उसके द्वारा बताए गए फ़ोल्डर को हटा दें, और पुनर्निर्माण करें, बस।
झांग बज़

यह सही जवाब है। प्रोजेक्ट को अन्य पथ पर ले जाने के बाद DerivedData को क्लीन / डिलीट करना मेरे लिए काम नहीं करता है।
बिल चान

13

फाइंडर में प्रोजेक्ट लोकेशन से फोल्डर Buildऔर DerivedDataफोल्डर को डिलीट करना मेरे लिए काम कर गया।


.buildकुछ लोगों (मेरे सहित) के लिए फ़ोल्डर हो सकता है
फ्लोरियन पिफ़िस्टर

ठीक काम करता है। यह भी देखें stackoverflow.com/questions/33653727/…
Mr-IDE

13

अपने ios प्रोजेक्ट डायरेक्टरी में, ModuleCache फ़ोल्डर बनाने और हटाने के लिए जाएंreact-native run-iosफिर से चलाएं , यह उम्मीद के मुताबिक काम करना चाहिए। सारांश -rm -rf ios/build/ModuleCache


हां, प्रतिक्रिया-मूल पर भी और Xcode से निर्माण कार्य करता है, लेकिन CLI से npm रन ios का उपयोग नहीं करता है। सुझाव के अनुसार कैश निकालने से समस्या हल हो गई।
दिनांक

6

Xcode अपग्रेड करने के बाद मुझे यह कई प्रोजेक्ट्स के साथ मिल रहा था। क्लीन बिल्ड फोल्डर और क्लीन का कोई प्रभाव नहीं था - @ जवाब और @ josema.vitaminew की टिप्पणी ने मेरे लिए किया। लेकिन यह मुश्किल हो सकता है जब तक कि आप थोड़ा चालाक का उपयोग न करें, इसलिए यहां एक कदम से कदम शॉर्टकट है:

  1. उस बिल्ड लॉग पर जाएं जो विफल रहा
  2. इसे खोजने के लिए cmd-f "SharedPrecompiledHeaders" का उपयोग करें (यह एक बड़े भयानक जटिल कमांडलाइन के बीच में होगा)
  3. "SharedPrecompiledHeaders" पाठ और सभी वर्णों को ड्रैग-सिलेक्ट करें, लेकिन तब तक नहीं जब तक कि आप उस पथ बिट (पाठ के बड़े ब्लॉक के बीच में) के शुरू होने तक प्राप्त न कर लें, उदाहरण के लिए मेरे लिए: "/ var / फ़ोल्डर्स / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. खुला खोजक
  5. मेनू: गो -> फ़ोल्डर पर जाएं ...
  6. चयनित पथ को कॉपी / पेस्ट करें
  7. "SharedPrecompiledHeaders" में सभी उप-फ़ोल्डर हटाएं (यह सुरक्षित है: यह केवल कैश्ड डेटा है)

... और अब आपकी सभी परियोजनाएं "फिक्स्ड" होंगी, लेकिन शून्य कैशिंग के साथ पहली बार खुद को फिर से बनाना होगा (इसलिए अगला निर्माण केवल सामान्य से धीमा होगा)।


5

मेरे मामले में मुझे इस तरह से SharedPrecompiledHeaders के तहत सभी फ़ाइलों से छुटकारा मिल गया और सब कुछ ठीक काम करने लगा:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete

यह कुछ ऐसा है मैं आसानी से एक स्क्रिप्ट में उपयोग कर सकते हैं, तो मैं ऐसा ... मैं किसी भी बुरी मामलों [अभी तक] पता नहीं लगाया
मैट

5

स्विफ्ट पैकेज मैनेजर के साथ प्रोजेक्ट बनाने की कोशिश के दौरान मुझे यह त्रुटि मिली।

समाधान केवल .buildनिर्देशिका को हटा रहा है ।


4

विशेष रूप से यदि आप कमांड लाइन से निर्माण करते हैं या आपके पास एक बिल्ड स्क्रिप्ट है, तो xcode लक्ष्य को साफ करना पर्याप्त नहीं है। आपने इस फ़ोल्डर को हटा दिया है।

पूर्वनिर्धारित हेडर स्थान में पाया जा सकता है

Target -> build settings => "Build locations" -> Precompiled headers cached path

इस फ़ोल्डर को हटाएं,

#rm -fr SharedPrecompiledHeaders

यहाँ छवि विवरण दर्ज करें


मेरा कैश पथ बिल्ड फ़ोल्डर / बिल्ड / ModuleCache / में था। पुराने स्थान से इसे
हटाकर

3

अगर यह सफाई से हल नहीं है। यह एक बिल्ड कैश समस्या है - विकल्प कुंजी दबाए रखें और उत्पाद> क्लीन बिल्ड फ़ोल्डर में नेविगेट करें। इससे मेरी समस्या ठीक हो गई।


3

मेरे मामले में Xcode मेरे प्रोजेक्ट मुख्य बंडल (/ उपयोगकर्ता / Path_to_your_project_source_code / YourProjectName / DerivedData) में DerivedData फ़ोल्डर बना रहा था

मैंने अभी अपने स्रोत कोड बंडल से इस फ़ोल्डर को हटा दिया है और अब यह काम कर रहा है।

Xcode प्राथमिकताएं-> स्थानों पर जाएँ की जाँच करने के लिए और देखें कि क्या DerivedData को "सापेक्ष" के लिए चुना गया है। नीचे तस्वीर देखें यहाँ छवि विवरण दर्ज करें


3

मेरे लिए यह हमेशा होता है जब मैं अपने प्रोजेक्ट को किसी अन्य स्थान पर कॉपी करता हूं। मैं इसे रेपो या किसी चीज़ में धकेलने के लिए करूँगा।

मुझे काम करने के लिए पुराने और नए स्थानों में बिल्ड फ़ोल्डर (rm -rf Build /) को हटाना होगा। यह समझ में आता है क्योंकि बिल्ड फ़ोल्डर में डेटा होगा जो नए स्थान के लिए अप्रासंगिक है।

व्युत्पन्न डेटा की सफाई या शेअर किए गए शेयर को डिलीट करने वाले फ़ोल्डर को वास्तव में इस मामले में ऐसा नहीं करना चाहिए।


2

आपको "शिफ्ट + कमांड + सी" पकड़ना चाहिए, और फिर आप सफल होंगे


2

व्युत्पन्न डेटा की सफाई और / या मेरे लिए काम नहीं किया। क्या काम किया गया है। Pch फ़ाइल को स्पर्श करना / सहेजना (किसी वर्ण को जोड़ना, फिर उसे हटाना) को फिर से बनाने के लिए बाध्य करना। यह चाल चली।


इसने मेरे लिए काम किया। मैंने SharedPrecompiledHeaders डायरेक्टरी, क्लीन बिल्ड, क्लीन बिल्ड फोल्डर आदि को डिलीट कर दिया। यह Xcode 5.1 पर था
migs647

PCH फ़ाइल कहाँ है?
TheJeff

2

यदि क्लीन बिल्ड करना आपके लिए काम नहीं करता है, तो पीसीएच फाइलों को देखें /var/folders/../SharedPrecompiledHeadersऔर पीसीएच फाइलों को हटा दें, जो मेरे लिए काम करती हैं।


2
इस बारे में एक उत्तर के समान है, जो @rewes द्वारा पोस्ट किए गए अधिक विवरण के साथ है। कृपया कोशिश करें कि डुप्लिकेट उत्तर पोस्ट न करें।
माइकेलइंडहल

2

आप उत्पाद या बिल्ड फ़ोल्डर को साफ करने का प्रयास कर सकते हैं:

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K


2

यदि आप के माध्यम से एक कमांड लाइन का निर्माण कर रहे हैं xcodebuild, तो देखें कि क्या -derivedDataPath BUILD_DIRविकल्प का उपयोग किया जाता है। यदि ऐसा है, तो आपका ModuleCache.noindex निर्देशिका सामान्य Xcode स्थान के बजाय BUILD_DIR में होगी। ModuleCache.noindex निर्देशिका हटाएं और आप सभी सेट हो जाएंगे।

मैं इस स्थिति में भाग गया क्योंकि मैं एक रिएक्टिव नेटिव ऐप बना रहा हूं, और आईओएस क्लाइंट आमतौर पर कमांड लाइन से रिएक्ट नेटिव टूलसेट के माध्यम से बनाया जाता है।


1

मैंने प्रोजेक्ट को साफ करने और बिल्ड फोल्डर को साफ करने की कोशिश की है जो दोनों काम नहीं करते।

उसके बाद, मैंने xCode को पूरी तरह से छोड़ दिया, इसके मानक स्थान पर व्युत्पन्न डेटा फ़ोल्डर को हटा दिया: ~ / Library / Developer / Xcode / DerivedData, xCode को फिर से शुरू किया और परियोजना का निर्माण किया।

ऐसा लगता था कि मेरे लिए समस्या का समाधान हो गया है।


क्या आप थोड़ा विस्तार से बता सकते हैं?
रिचर्ड डेली

Xcode को बंद करना, rm -rf ~/Library/Developer/Xcode/DerivedDataटर्मिनल में चलाना , और फिर Xcode को खोलना मेरे लिए था। मैंने यह भी सुनिश्चित किया कि मेरे स्थान (Xcode -> प्राथमिकताएँ -> स्थान) सभी डिफ़ॉल्ट थे।
sman591

1

UPDATED

इसने मेरे लिए पूरी तरह से काम किया:

  • अपना प्रोजेक्ट या कार्यक्षेत्र बंद करें।
  • खोजक में: +shift + ⌘cmd + G
  • पेस्ट: ~ / पुस्तकालय / डेवलपर / Xcode / DerivedData /
  • ModuleCache फ़ोल्डर और खाली कचरा हटाएं।
  • अपना प्रोजेक्ट खोलें।
  • साफ: :shift + ⌘cmd + K
  • बिल्ड: ⌘cmd + B

xCode 7.3.1 यहाँ
संदर्भ


0

मैंने सिर्फ डिलीट DerivedDataकिया और मेरे लिए काम किया।

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