ข้อผิดพลาดของคอมไพเลอร์ Xcode เวอร์ชัน 4.6.2 (4H1003)


88

ฉันเพิ่งอัปเดตเป็น Xcode เวอร์ชัน 4.6.2 (4H10003) และพยายามเรียกใช้โครงการแอปพลิเคชันที่ทำงานก่อนหน้านี้ในโปรแกรมจำลองและได้รับข้อผิดพลาดต่อไปนี้และการสร้างล้มเหลว

ไฟล์ PCH ที่สร้างจากสาขาอื่น ((clang-425.0.27)) กว่าคอมไพเลอร์ ((clang-425.0.28))

มีอะไรผิดพลาดและจะแก้ไขได้อย่างไร?


ฉันลองทำผลิตภัณฑ์ -> ล้างและลบแอปที่สร้างไว้ก่อนหน้านี้ออกจากโปรแกรมจำลอง ไม่ได้ผล
OscarTheGrouch

2
"Clean Build Folder" ไม่ช่วยแก้ปัญหาของฉันเมื่อสร้างลงในอุปกรณ์ (ลองหลายครั้ง) ฉันต้อง "Clean Build Folder" สร้างเป็นโปรแกรมจำลองจากนั้นสร้างลงในอุปกรณ์จึงได้รับการแก้ไข
DBD

คำตอบ:


183

ทำความสะอาดโครงการ ตัวเลือกค้างไว้เพื่อที่คุณจะล้างโฟลเดอร์บิลด์และตัวกลางทั้งหมด คุณอาจต้องออกจาก Xcode และทิ้งเนื้อหาทั้งหมดของโฟลเดอร์ DerivedData ด้วยมือใน Finder ตามที่ฉันอธิบายไว้ที่นี่: วิธีล้างแคชและล้างเป้าหมายทั้งหมด Xcode 4


ใช่สะอาดก็ใช้ได้ผลสำหรับฉันเช่นกัน ข้อผิดพลาดเป็นเพียงการบอกว่าส่วนหัวที่คอมไพล์ไว้ล่วงหน้าสร้างขึ้นด้วยเวอร์ชันอื่นและไม่สามารถใช้งานร่วมกับคอมไพเลอร์เวอร์ชันใหม่ล่าสุดได้
zingle-dingle

หากสิ่งนี้ไม่ได้เกิดขึ้นกับคุณในการอัปเกรด Xcode ก่อนหน้านี้คุณก็โชคดี มันเกิดขึ้นกับฉัน หลังจากนั้นไม่นาน ...
แมตต์

สิ่งนี้ใช้ได้ผลสำหรับฉันหลังจากทำ 'Clean Build Folder' โดยมีตัวเลือกค้างไว้ ขอบคุณ!
ลุค

1
สิ่งนี้ใช้ได้ผลสำหรับฉันขอบคุณ ... ฉันไม่รู้ว่าการถือตัวเลือกนั้นเป็นการทำความสะอาดแบบอื่น
OscarTheGrouch

ใช้ได้กับการสร้างภายใน Xcode เท่านั้น หากคุณสร้างจากบรรทัดคำสั่งโปรดดูโพสต์ของ Rodrigo Lima ด้านล่าง
Jeff

21

ไปที่โครงการของBuild Settingsคุณค้นหาการตั้งค่าที่ตั้งชื่อPrecompiled Headers Cache Pathแล้วลบโฟลเดอร์นั้น


การดำเนินการนี้เท่านั้นที่ช่วยฉันในการแก้ไขปัญหาดังกล่าว ขอบคุณ!
สีส้ม


9

จากXCode 4.6.2 Release Notes

ปัญหาที่ทราบ

อาคาร

เมื่อสร้างผลิตภัณฑ์ที่สร้างขึ้นก่อนหน้านี้ด้วย Xcode 4.6.1 หรือรุ่นก่อนหน้าการสร้างจะล้มเหลวโดยมีข้อผิดพลาดคล้ายกับผลิตภัณฑ์นี้:

ไฟล์ PCH ที่สร้างจากสาขาอื่น ((clang-425.0.27)) กว่าคอมไพเลอร์ ((clang-425.0.28))

ในการแก้ไขปัญหานี้ให้เลือกผลิตภัณฑ์> ทำความสะอาดก่อนสร้างผลิตภัณฑ์ของคุณ 13663167

การแสดงผลิตภัณฑ์> ทำความสะอาดงาน


1
ใช่มันเป็นปัญหากับเวอร์ชันก่อนหน้า แต่เป็นที่ทราบกันดีว่าควรกล่าวถึงในบันทึกประจำรุ่นเท่านั้น นอกจากนี้ยังไม่มีวิธีแก้ปัญหาสำหรับผู้ที่ไม่ได้ใช้ Xcode เป็น IDE, @sycx ทำ (ล้างเส้นทางแคชของส่วนหัวที่คอมไพล์ล่วงหน้า)
A-Live

9

ฉันได้พยายามทั้งหมดข้างต้นและทำงานดีจาก Xcode UI แต่มันก็ยังคงล้มเหลวสำหรับฉันเมื่อฉันวิ่งxcodebuildจากบรรทัดคำสั่ง

นั่นเป็นเพราะการพึ่งพาไลบรารีอื่น ๆ และส่วนหัวของคอมไพล์ล่วงหน้า เมื่อเรียกใช้จากบรรทัดคำสั่งดูเหมือน xcodebuild store / อ่านส่วนหัวที่คอมไพล์ล่วงหน้าจากที่นี่:

/var/folders/v0/ztxy9kls7sv05dpmvjgg_xwr0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders

หลังจากล้างโฟลเดอร์นั้นแล้ว xcodebuild ก็ทำได้สำเร็จ


2
ตำแหน่งโฟลเดอร์นี้จะแตกต่างกันสำหรับทุกคนดังนั้นวิธีที่รวดเร็วในการค้นหาโฟลเดอร์ที่ถูกต้องเพื่อทำความสะอาดคือการใช้ find + grep ... sudo find / var / folder | grep SharedPrecompiled
Greg Combs

1
ผมมีปัญหาเดียวกัน. การเรียกใช้จากบรรทัดคำสั่งล้มเหลวแม้ว่าฉันจะสร้างจากภายใน Xcode ฉันลงเอยด้วยการรัน: sudo find /private/var/folders -name SharedPrecompiledHeadersจากนั้นล้างไดเรกทอรีที่เป็นผลลัพธ์ ทำงานอย่างมีเสน่ห์
Jeff

ถ้าฉันสามารถโหวตเพิ่มคะแนนเพิ่มเติมได้ฉันจะทำ การทำความสะอาดอย่างแน่นอนดูเหมือนจะไม่ได้ผลจากฉันเมื่อสร้างจากบรรทัดคำสั่ง ฉันคาดหวังว่ามันจะเป็นเช่นนั้น แต่การรู้ว่าจะหาส่วนหัวที่คอมไพล์ไว้ได้ที่ไหนนั้นมีประโยชน์มาก
John Bowers

4

โดยเฉพาะอย่างยิ่งหากคุณสร้างจากบรรทัดคำสั่งหรือคุณมีสคริปต์การสร้างการทำความสะอาดเป้าหมาย xcode นั้นไม่เพียงพอ คุณต้องลบโฟลเดอร์นี้

ตำแหน่งที่แน่นอนของส่วนหัวที่คอมไพล์ไว้ล่วงหน้าสามารถพบได้ในโครงการส่วนหนึ่งของเส้นทางโฟลเดอร์เป็นแบบสุ่ม (ฉันเดา) โดยเฉพาะหลังจาก /var/folders/xx..xxx/C

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

เรียกใช้ Terminal และไปที่โฟลเดอร์นี้และลบ (ใช้คำสั่ง)

#rm -fr SharedPrecompiledHeaders

ป้อนคำอธิบายภาพที่นี่


ตอบโจทย์มาก! แต่ฉันไม่มีโฟลเดอร์ดังกล่าวในตำแหน่งนั้น (แม้แต่ที่ Terminal prompt โดยใช้ ls -lAhF) อย่างไรก็ตามการปิด Xcode แล้วลบโฟลเดอร์ com.apple.Xcode.501 ก็ใช้ได้ดี
RedYeti

ตำแหน่งที่แน่นอนของส่วนหัวที่คอมไพล์ไว้ล่วงหน้าสามารถพบได้ในโครงการส่วนหนึ่งของเส้นทางโฟลเดอร์เป็นแบบสุ่ม (ฉันเดา) โดยเฉพาะหลังจาก /var/folders/xx..xxx/C
karim

ขอโทษ - ฉันไม่ชัดเจน ใช่เส้นทางจะเปลี่ยนไปด้านล่าง / var / โฟลเดอร์ / * เสมอ แต่โฟลเดอร์ที่ไม่มีคือ "SharedPrecompiledHeaders" ซึ่งทำให้ฉันประหลาดใจ แต่การลบโฟลเดอร์หลักที่ฉันพูดถึงควรใช้งานได้โดยไม่มีปัญหา
RedYeti

4

ฉันต้องลบ~/Library/Developer/Xcode/DerivedData/ Clean ด้วยตนเองไม่ได้ผลสำหรับฉัน



0

ทำความสะอาดโครงการของคุณและเรียกใช้

ผลิตภัณฑ์ -> ทำความสะอาดแล้วเรียกใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.