Compilerfehler in Xcode Version 4.6.2 (4H1003)

88

Ich habe gerade auf Xcode Version 4.6.2 (4H10003) aktualisiert und versucht, ein zuvor funktionierendes Anwendungsprojekt im Simulator auszuführen. Dabei wurde der folgende Fehler angezeigt, und der Build ist fehlgeschlagen.

PCH-Datei, die aus einem anderen Zweig ((clang-425.0.27)) als der Compiler ((clang-425.0.28)) erstellt wurde

Was ist schief gelaufen und wie kann es behoben werden?

OscarTheGrouch
quelle
Ich habe versucht, ein Produkt zu erstellen -> Bereinigen und die zuvor erstellte App aus dem Simulator löschen. Beides hat nicht funktioniert.
OscarTheGrouch
2
"Clean Build Folder" hat mein Problem beim Erstellen auf einem Gerät nicht gelöst (mehrmals versucht). Ich musste "Build Build Folder", Build to Simulator, dann Build to Device, das behoben wurde.
DBD

Antworten:

183

Reinigen Sie das Projekt. Halten Sie die Option gedrückt, damit Sie den gesamten Build-Ordner und die Zwischenprodukte bereinigen. Möglicherweise müssen Sie Xcode beenden und den gesamten Inhalt des DerivedData-Ordners von Hand im Finder wegwerfen, wie hier beschrieben: So leeren Sie Caches und bereinigen Sie alle Ziele Xcode 4

matt
quelle
Ja, ein Clean hat auch bei mir funktioniert. Der Fehler besagt lediglich, dass die vorkompilierten Header mit einer anderen Version erstellt wurden und nicht mit der neuesten Compilerversion kompatibel sind.
Zingle-Dingle
Wenn Ihnen dies bei früheren Xcode-Upgrades nicht passiert ist, hatten Sie einfach Glück. Es ist mir passiert. Man gewöhnt sich nach einer Weile daran ...
Matt
Dies funktionierte für mich, nachdem ich den 'Clean Build Folder' mit gedrückter Option ausgeführt hatte. Vielen Dank!
Luke
1
Das hat bei mir funktioniert, danke ... Ich wusste nicht, dass das Halten der Option eine andere Art der Reinigung bewirkt.
OscarTheGrouch
Dies funktioniert nur zum Erstellen in Xcode. Wenn Sie über die Befehlszeile erstellen, lesen Sie den Beitrag von Rodrigo Lima weiter unten.
Jeff
21

Gehen Sie zu Ihrem Projekt Build Settings, suchen Sie eine Einstellung mit dem Namen Precompiled Headers Cache Pathund löschen Sie diesen Ordner

sycx
quelle
Nur diese Aktion hat mir bei dem genannten Problem geholfen. Vielen Dank!
Orange
13

command+shift+kFühren Sie eine Bereinigung mit dem vorhandenen Projekt durch und führen Sie es erneut aus.

Geben Sie hier die Bildbeschreibung ein

Vaibhav Saran
quelle
9

Ab XCode 4.6.2 Versionshinweise

Bekannte Probleme

Gebäude

Wenn Sie ein Produkt erstellen, das zuvor mit Xcode 4.6.1 oder früher erstellt wurde, schlägt die Erstellung mit einem ähnlichen Fehler fehl:

PCH-Datei, die aus einem anderen Zweig ((clang-425.0.27)) als der Compiler ((clang-425.0.28)) erstellt wurde

Um dieses Problem zu beheben, wählen Sie Produkt> Reinigen, bevor Sie Ihr Produkt erstellen. 13663167

Produkt ausführen> Reinigen

Michael Davidovich
quelle
1
Ja, es war ein Problem mit früheren Versionen, aber es wird anerkannt, dass es erst jetzt in den Versionshinweisen erwähnt werden sollte. Außerdem bieten sie keine Lösung für Benutzer, die Xcode nicht als IDE verwenden, wie dies bei @sycx der Fall ist (Cache-Pfad für vorkompilierte Header löschen).
A-Live
9

Ich habe alles oben Genannte versucht und es funktioniert gut über die Xcode-Benutzeroberfläche, aber es schlug immer noch fehl , als ich xcodebuild über die Befehlszeile ausführte .

Dies war auf Abhängigkeiten zu anderen Bibliotheken und deren vorkompilierten Headern zurückzuführen. Wenn es über die Befehlszeile ausgeführt wird, sieht es so aus, als würde xcodebuild vorkompilierte Header von hier speichern / lesen:

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

Nach dem Bereinigen dieses Ordners war xcodebuild erfolgreich.

Rodrigo Lima
quelle
2
Dieser Ordner wird für jeden anders sein. Eine schnelle Möglichkeit, den richtigen zu bereinigenden Ordner zu finden, ist die Verwendung von find + grep ... sudo find / var / folders | grep SharedPrecompiled
Greg Combs
1
Ich hatte das gleiche Problem. Das Ausführen über die Befehlszeile ist fehlgeschlagen, obwohl ich in Xcode erstellen konnte. Am Ende lief ich: sudo find /private/var/folders -name SharedPrecompiledHeadersund leerte dann die resultierenden Verzeichnisse aus. Lief wie am Schnürchen.
Jeff
Wenn ich dem eine zusätzliche Gegenstimme geben könnte, würde ich. Auf jeden Fall scheint das Reinigen bei mir nicht zu funktionieren, wenn ich über die Befehlszeile baue. Ich hatte damit gerechnet, aber zu wissen, wo ich nach den vorkompilierten Headern suchen sollte, war sehr hilfreich.
John Bowers
4

Insbesondere wenn Sie über die Befehlszeile erstellen oder über ein Erstellungsskript verfügen, reicht das Bereinigen des xcode-Ziels nicht aus. Sie müssen diesen Ordner löschen.

Die genaue Position des vorkompilierten Headers finden Sie im Projekt. Ein Teil des Ordnerpfads ist zufällig (glaube ich), insbesondere nach /var/folders/xx..xxx/C.

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

Führen Sie Terminal aus, gehen Sie in diesen Ordner und löschen Sie (Befehl verwenden).

#rm -fr SharedPrecompiledHeaders

Geben Sie hier die Bildbeschreibung ein

Karim
quelle
Gute Antwort! Aber ich hatte keinen solchen Ordner an diesem Ort (selbst an der Eingabeaufforderung des Terminals mit ls -lAhF). Das Schließen von Xcode und das anschließende Löschen des Ordners com.apple.Xcode.501 funktionierte jedoch einwandfrei.
RedYeti
Die genaue Position des vorkompilierten Headers finden Sie im Projekt. Ein Teil des Ordnerpfads ist zufällig (glaube ich), insbesondere nach /var/folders/xx..xxx/C.
Karim
Entschuldigung - ich war nicht klar. Ja, der Pfad ändert sich immer unter / var / folders / *, aber der Ordner, der nicht da war, war "SharedPrecompiledHeaders" - was mich überrascht hat. Das Entfernen des übergeordneten Ordners, den ich erwähnt habe, sollte jedoch problemlos funktionieren.
RedYeti
4

Ich musste ~/Library/Developer/Xcode/DerivedData/ Clean manuell löschen. Das hat bei mir nicht funktioniert.

Orkoden
quelle
0

Verwenden Sie "Befehl + Umschalt + k", um Ihr Projekt zu bereinigen, dann ist alles in Ordnung.

Yiyue Wang
quelle
0

Bereinigen Sie Ihr Projekt und führen Sie es aus

Produkt-> Reinigen, dann ausführen.

Vineesh TP
quelle