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.