Błąd kompilatora Xcode w wersji 4.6.2 (4H1003)


88

Właśnie zaktualizowałem Xcode do wersji 4.6.2 (4H10003) i próbowałem uruchomić wcześniej działający projekt aplikacji w symulatorze i otrzymałem następujący błąd, a kompilacja nie powiodła się.

Plik PCH zbudowany z innej gałęzi ((clang-425.0.27)) niż kompilator ((clang-425.0.28))

Co poszło nie tak i jak można to naprawić?


Próbowałem zrobić Produkt -> Wyczyść i usunąć wcześniej zbudowaną aplikację z symulatora. Żadne nie działało.
OscarTheGrouch

2
„Czysty folder kompilacji” nie rozwiązał mojego problemu podczas kompilowania na urządzenie (próbowałem kilka razy). Musiałem „wyczyścić folder kompilacji”, zbudować do symulatora, a następnie skompilować na urządzenie, co zostało rozwiązane.
DBD

Odpowiedzi:


183

Wyczyść projekt; Hold Option, aby wyczyścić cały folder kompilacji i elementy pośrednie. Być może będziesz musiał zamknąć Xcode i ręcznie wyrzucić całą zawartość folderu DerivedData w Finderze, jak opiszę tutaj: Jak opróżnić pamięć podręczną i wyczyścić wszystkie cele Xcode 4


Tak, sprzątanie też mi pomogło. Błąd mówi tylko, że wstępnie skompilowane nagłówki zostały zbudowane w innej wersji i nie są zgodne z najnowszą wersją kompilatora.
zingle-dingle

Jeśli tak się nie stało podczas poprzednich aktualizacji Xcode, po prostu miałeś szczęście. To mi się przydarzyło. Przyzwyczaisz się do tego po jakimś czasie ...
mat.

To zadziałało dla mnie po wykonaniu „Clean Build Folder” z przytrzymaną opcją. Dzięki!
Luke

1
To zadziałało dla mnie, dzięki ... Nie wiedziałem, że przytrzymanie opcji powoduje inny rodzaj czyszczenia.
OscarTheGrouch

Działa to tylko w przypadku budowania w Xcode. Jeśli budujesz z wiersza poleceń, zobacz post Rodrigo Limy poniżej.
Jeff

21

Przejdź do swojego projektu Build Settings, znajdź ustawienie o nazwie Precompiled Headers Cache Path, a następnie usuń ten folder


Tylko ta czynność pomogła mi w rozwiązaniu wspomnianego problemu. Dzięki!
Pomarańczowy


9

Z XCode 4.6.2 Release Notes

Znane problemy

Budynek

Podczas budowania produktu wcześniej zbudowanego za pomocą Xcode 4.6.1 lub starszego kompilacja kończy się niepowodzeniem z błędem podobnym do tego:

Plik PCH zbudowany z innej gałęzi ((clang-425.0.27)) niż kompilator ((clang-425.0.28))

Aby rozwiązać ten problem, wybierz opcję Produkt> Wyczyść przed utworzeniem produktu. 13663167

Wykonywanie produktu> Wyczyść prace


1
Tak, był to problem z poprzednimi wersjami, ale uznano, że warto o nim wspomnieć w informacjach o wydaniu dopiero teraz. Ponadto nie dają żadnego rozwiązania dla osób, które nie używają Xcode jako IDE, @sycx robi (wyczyść ścieżkę pamięci podręcznej prekompilowanych nagłówków).
A-Live

9

Wypróbowałem wszystkie powyższe i działa dobrze z interfejsu użytkownika Xcode, ale nadal kończyło się niepowodzeniem, gdy uruchomiłem xcodebuild z wiersza poleceń .

Było to spowodowane zależnościami od innych bibliotek i ich nagłówkami przed kompilacją. Podczas uruchamiania z wiersza poleceń wygląda jak xcodebuild przechowuje / czyta wstępnie skompilowane nagłówki stąd:

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

Po wyczyszczeniu tego folderu program xcodebuild powiódł się.


2
Ta lokalizacja folderu będzie inna dla każdego, więc szybkim sposobem na znalezienie odpowiedniego folderu do wyczyszczenia jest użycie polecenia find + grep ... sudo find / var / folders | grep SharedPrecompiled
Greg Combs

1
Miałem ten sam problem. Uruchamianie z wiersza poleceń nie powiodło się, mimo że mogłem budować z poziomu Xcode. Skończyło się na tym, że uruchomiłem: sudo find /private/var/folders -name SharedPrecompiledHeadersa następnie opróżniłem powstałe katalogi. Działał jak urok.
Jeff

Gdybym mógł dać temu dodatkowy głos, zrobiłbym to. Zdecydowanie czyszczenie nie działa, gdy buduję z wiersza poleceń. Spodziewałem się, że tak się stanie, ale wiedza o tym, gdzie szukać wstępnie skompilowanych nagłówków, była bardzo pomocna.
John Bowers,

4

Szczególnie, jeśli budujesz z wiersza poleceń lub masz skrypt kompilacji, wyczyszczenie celu xcode nie wystarczy. Musisz usunąć ten folder.

Dokładną lokalizację prekompilowanego nagłówka można znaleźć w projekcie, część ścieżki do folderu jest losowa (chyba), szczególnie po /var/folders/xx..xxx/C.

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

Uruchom Terminal i przejdź do tego folderu i usuń (użyj polecenia),

#rm -fr SharedPrecompiledHeaders

wprowadź opis obrazu tutaj


Świetna odpowiedź! Ale nie miałem takiego folderu w tej lokalizacji (nawet w monicie terminala przy użyciu ls -lAhF). Jednak zamknięcie Xcode, a następnie usunięcie folderu com.apple.Xcode.501 działało dobrze.
RedYeti

Dokładną lokalizację prekompilowanego nagłówka można znaleźć w projekcie, część ścieżki folderu jest losowa (chyba), szczególnie po /var/folders/xx..xxx/C.
karim

Przepraszam - nie było jasne. Tak, ścieżka zawsze będzie się zmieniać poniżej / var / folders / *, ale folder, którego tam nie było, to „SharedPrecompiledHeaders” - co mnie zaskoczyło. Ale usunięcie folderu nadrzędnego, o którym wspomniałem, powinno działać bez problemu.
RedYeti

4

Musiałem ręcznie usunąć ~/Library/Developer/Xcode/DerivedData/ Clean nie działa dla mnie.


0

użyj "command + shift + k", aby wyczyścić projekt, wszystko będzie dobrze.


0

Wyczyść swój projekt i uruchom

Produkt-> Wyczyść, a następnie uruchom.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.