Schwerwiegender Xcode 4.1-Fehler: stdlib wurde geändert, seit der vorkompilierte Header erstellt wurde


73

Erstellen einer iPhone-App mit:

  • Xcode 4.1
  • Basis-SDK iOS 4.3
  • Apple LLVM Compiler 2.1

Ich habe folgende Fehlermeldung erhalten:

Schwerwiegender Fehler: Die Datei '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/../lib/clang/2.1/include/stdint.h' wurde seit der Erstellung des vorkompilierten Headers geändert

Ich habe versucht, Xcode und OS X neu zu installieren - kein Glück. Was verursacht das?


Siehe meine Antwort hier: Link Ich hoffe es wird jemandem helfen :).
Martinmose

Antworten:


152

Versuchen Sie zunächst einen sauberen Build über das Menü Produkt -> Reinigen (ab XCode 4.6.2).

Wenn das immer noch nicht funktioniert, öffnen Sie den Organizer (wählen Sie im Menü Fenster-> Organizer). Sobald der Organizer geöffnet ist, wählen Sie Projekte aus der Symbolleiste oben im Fenster. Auf der linken Seite finden Sie eine Liste der Projekte. Wählen Sie das Projekt aus, mit dem Sie ein Problem haben.

Das Detailfenster (rechts neben der Liste) zeigt den Projektnamen, den Standort und den Status an. Die Zeile darunter zeigt, wo sich die abgeleiteten Daten befinden. Klicken Sie ganz rechts auf die Schaltfläche Löschen. Ein Dialogfeld wird angezeigt. Klicken Sie auf Löschen.

Sie können die abgeleiteten Daten auch manuell löschen:

~/Library/Developer/Xcode/DerivedData/{project name + gobly-gook}

Dieses Verzeichnis enthält erstellte Produkte und Indizes für das Projekt. Es ist in Ordnung , es zu löschen, da es nur von Xcode generierte Elemente enthält. Xcode generiert beim nächsten Öffnen des Projekts alles neu.


24
Oder Sie können einfach Ihre .pchDatei "berühren" (oder ein Zeichen hinzufügen und entfernen), damit sie neu kompiliert wird, ohne dass Sie Ihr gesamtes Projekt bereinigen und neu erstellen müssen (auf diese Weise ist der nächste Build
viel

Mit älteren Versionen von Xcode war dies die einzige Möglichkeit, dies zu beheben.
Logancautrell

1
Ich musste auch das Modul / & App-Verzeichnis unter DerivedData löschen, nachdem ich (versehentlich) einen Systemheader geändert hatte.
VaporwareWolf

@AliSoftware Wenn Sie sagen, berühren Sie .pch, das funktioniert einfach, weil es nur die Möglichkeit ist, das gesamte Projekt neu zu kompilieren (was durch Neukompilieren erreicht werden kann), da .pch standardmäßig in die gesamte Klasse importiert wird. Wenn Sie es berühren, wird das gesamte Projekt alle kompiliert Über.
Rptwsthi

1
OSX 10.10.2 / Xcode 6.2. Ich habe mich in NSMutableArray.h nach einer Methode umgesehen und anschließend beim Versuch, mein Projekt zu erstellen, diesen Fehler erhalten. Ich muss wohl versehentlich etwas geändert haben. Mein aktuelles Projekt würde nicht erstellt, keine alten Projekte würden erstellt und ein neues Projekt würde nicht erstellt. Bei mir hat keine Reinigung funktioniert, und es hat auch nicht funktioniert, in den Organizer zu gehen und zu löschen. Was für mich funktioniert hat war: 1) $ cd ~/Library/Developer/Xcode/2) Dann den gesamten DerivedData-Ordner löschen : ~/Library/Developer/Xcode$ rm -rf DerivedData.
7stud

76

Ich konnte es viel einfacher beheben, indem ich einfach Produkt> Bereinigen und dann Produkt> Erstellen aus der Xcode-Menüleiste auswählte.


8
+1. Habe das gleiche gemacht, aber eine "Tiefenreinigung" durch Drücken von Cmd + Opt + Shft + K
jmstone617

Bitte beachten Sie, dass Sie auf jedem Zielgerät, auf dem der Fehler auftritt, Clean and Build ausführen müssen. Ich musste es für meinen Simulator und für mein iPad tun .
neoscribe

37

Das Löschen des DerivedData-Ordners hat bei der Archivierung bei mir nicht funktioniert.

Ich musste mir Build-Einstellungen - Build-Speicherorte - Vorkompilierter Header-Cache-Pfad ansehen und diesen Ordner löschen.

Für mich war das:

/var/folders/_w/t0mj70hd1439tqgxff7_mtt00000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders

Dieser Ordner hat auch bei mir funktioniert. Obwohl ich zuvor den Ordner ~ / Library ... gelöscht habe.
Futureshocked

Ich habe gerade bemerkt, dass sich dieser Ordner in den Build-Einstellungen befindet. Es heißt Precompiled Header Cache Path!
Ameisen

16

Ich dachte, ich würde der Antwort von Cryptognome eher eine separate Antwort als einen Kommentar hinzufügen, da dies tatsächlich eine andere Lösung ist, wenn das Problem vom Ausführen herrührt xcodebuild. Wie bei Cryptognome hatte ich den Fehler mit dem Befehlszeilentool xcodebuild. Als Alternative zum manuellen Aufrufen der /varUnterordner stellte ich fest, dass ich meinen eigenen Cache für den gemeinsam genutzten PCH festlegen konnte. Dies können Sie tun, indem Sie die Umgebungsvariable SHARED_PRECOMPS_DIRwie folgt festlegen

xcodebuild -target Foo -configuration Release SHARED_PRECOMPS_DIR=/tmp/foo/SharedPCH

Auf diese Weise erhalte ich bei automatischen Builds nie den Fehler.

Beachten Sie im obigen Befehl, dass ich normalerweise auch die OBJROOTund SYMROOTenv var so einstelle , dass sie auch in / tmp erstellt werden. Am Ende räume ich auf.


Für mich hat die Verwendung xcodebuild clean builddes Builds wieder funktioniert.
ThomasW

4

Das Befehlszeilentool xcodebuild schlägt manchmal mit diesem Fehler fehl. Dies ist mir passiert, als ich einen SVN-Arbeitsbereich mit einem früheren Build synchronisiert habe. Das xcodebuild-Tool speichert seine vorkompilierten Header im Ordner Ants:

/var/folders/... scrambled eggs .../-Caches-/com.apple.Xcode.503/SharedPrecompiledHeaders/

Sie müssen im Build-Befehl selbst nachsehen, um den tatsächlichen Ordnernamen (-include / var / ...) zu sehen. Wenn Sie jedoch für verschiedene Architekturen (arm6, arm7, Simulator, z. B.) erstellen, werden möglicherweise mehrere verwendet Wenn Sie dieses Problem mit einem Befehlszeilen-Build haben, löschen Sie einfach alles in /var/.../SharedPrecompiledHeaders.


1
Das war das Problem, das ich auch hatte. Anstatt mich auf diesen Standard-Cache-Ordner zu verlassen, habe ich meinen eigenen Cache in demselben / tmp-Unterordner festgelegt, den ich für den automatischen Build verwendet habe, den Sie verwenden können, indem Sie z. B. SHARED_PRECOMPS_DIR=/tmp/foo/SharedPrecompiledHeadersals Argument an übergeben xcodebuild. Auf diese Weise erhalte ich bei automatischen Builds nie den Fehler.
Charles

3

Entfernen Sie den Inhalt für den Simulator mit iOS Simulator> Inhalt und Einstellungen zurücksetzen ... und klicken Sie auf "Ausruhen". Dadurch werden alle vorhandenen vorkompilierten Instanzen der Header und Ressourcen entfernt. Das hat bei mir funktioniert


3

Lösung:

1) Produkt-> Reinigen

2) Produkt-> Erstellen

Fehlertyp:

eine Art Build-Fehler

Eine der Ursachen:

Möglicherweise hat man die Framework-Datei geändert. Dies geschieht manchmal, wenn eine Änderung an einem Framework vorgenommen wird, von dem ein anderes Framework abhängt. Der vorkompilierte Header-Cache ist nicht mehr synchron und Xcode kann das angegebene Projekt nicht kompilieren.

Eines der Szenarien:

Möglicherweise haben Sie "Zur Definition springen" gewählt und nach Auswahl eines Framework-Steuerelements einige Änderungen vorgenommen.


1
Sicher genug, ich habe eine System-Header-Datei bearbeitet, die in der Fehlermeldung aufgeführt ist. Ich konnte Time Machine den Header wiederherstellen, dann bereinigen und mit Erfolg erstellen.
Greg

Es ist wirklich eine gute Lösung, sonst müsste man die oben genannten Schritte für jedes Projekt im System ausführen.
Durai Amuthan.H

1

Ich konnte diesen Fehler einfach durch Bereinigen (Befehl + Umschalt + K) und Wiederherstellen beseitigen.


0

Ich habe es vor allem aber ohne Nutzen versucht. Schließlich habe ich Xcode gelöscht und erneut installiert. Jetzt funktioniert es gut ..

Xcode-> Löschen-> erneut installieren

Es könnte jemandem helfen ...


0

Ich hatte diesen Fehler auf Cordova, als ich lief: cordova run ios

fatal error: file '/Users/.../cordova/platforms/ios/CordovaLib/CordovaLib_Prefix.pch' has been modified since the precompiled header
  '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode/SharedPrecompiledHeaders/CordovaLib_Prefix-bfgesbulnxtdepfwgniffeysypgv/CordovaLib_Prefix.pch.pch' was built
note: please rebuild precompiled header
  '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode/SharedPrecompiledHeaders/CordovaLib_Prefix-bfgesbulnxtdepfwgniffeysypgv/CordovaLib_Prefix.pch.pch'
1 error generated.

** BUILD FAILED **    

The following build commands failed:
    CompileC build/CordovaLib.build/Debug-iphoneos/CordovaLib.build/Objects-normal/armv7/NSDictionary+Extensions.o Classes/NSDictionary+Extensions.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    CompileC build/CordovaLib.build/Debug-iphoneos/CordovaLib.build/Objects-normal/armv7/CDVInvokedUrlCommand.o Classes/CDVInvokedUrlCommand.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler

Ich habe es mit Clean and Build versucht, aber es funktioniert nicht. Schließlich habe ich den Ordner '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode' entfernt und funktioniert! Dieser Tipp kann anderen helfen


Ein Ordner mit einem solchen Pfad scheint ein schmerzhaft zu enges Beispiel zu sein. Es könnte besser sein zu sagen: "Ich habe den fehlerhaften Ordner endgültig aus dem Fehler entfernt und es hat funktioniert."
Gutblender

Ja, Sie haben Recht, aber ich habe keinen anderen Fall wie meinen gefunden, daher denke ich, dass er für andere nützlich sein kann
Crystian

Genau mein Punkt - wenn man Ihre Antwort wörtlich nimmt, werden sie sich fragen: "Warum kann ich diesen Weg nicht finden?" Wenn das Problem darin besteht, "Ich habe den Verzeichnisbaum mit den vorkompilierten Headern gelöscht (was auch immer das für Sie sein mag) und es hat funktioniert."
Gutblender

0

Clean Wege funktionieren nicht für mich, schließlich habe ich dieses Problem durch Neuinstallation von XCode gelöst.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.