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ć?

OscarTheGrouch
źródło
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

matowe
źródło
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

sycx
źródło
Tylko ta czynność pomogła mi w rozwiązaniu wspomnianego problemu. Dzięki!
Pomarańczowy
13

Wykonaj czyszczenie, używając command+shift+ki ponownie uruchom istniejący projekt.

wprowadź opis obrazu tutaj

Vaibhav Saran
źródło
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

Michael Davidovich
źródło
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ę.

Rodrigo Lima
źródło
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

karim
źródło
Ś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.

orkoden
źródło
0

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

Yiyue Wang
źródło
0

Wyczyść swój projekt i uruchom

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

Vineesh TP
źródło