Kiedy buduję swoje rozwiązanie C ++ w programie Visual Studio, narzeka, że brakuje pliku xxxxx.pch. Czy brakuje mi ustawienia, aby odzyskać wstępnie skompilowane nagłówki?
oto dokładny błąd kompletności:
Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
c++
visual-studio
precompiled-headers
pch
Sam Mackrill
źródło
źródło
Odpowiedzi:
UWAGA: Późniejsze wersje IDE mogą używać „pch” zamiast „stdafx” w domyślnych nazwach powiązanych plików. Może być konieczne zastąpienie pch stdafx w instrukcjach poniżej. Przepraszam. To nie moja wina.
Kliknij OK
Jeśli nie masz stdafx.h w swoich plikach nagłówkowych, umieść go tam. Edytuj go, aby # zawierał wszystkie nagłówki, które chcesz skompilować.
Lucky 13. Trzymaj kciuki i naciśnij Build.
źródło
stdafx.pch
plik, podczas gdyxxxxx.pch
z pytania wskazuje na bardziej złożony problem (konfiguracja z wieloma PCH).Użycie prekompilowanego nagłówka (pch) jest procesem dwuetapowym.
W kroku pierwszym kompilujesz plik pośredniczący (w VS200x jest on zwykle nazywany
stdafx.cpp
. Nowsze wersje używająpch.cpp
.). Ten plik pośredni zawiera pośrednio tylko nagłówki, które chcesz skompilować. Zwykle jeden mały nagłówek (zwyklestdafx.h
lubpch.hpp
) zawiera listę standardowych nagłówków, takich jak<iostream>
i<string>
, które są następnie umieszczane w pliku pośredniczącym. Kompilowanie tego powoduje utworzenie pliku .pch.W kroku 2 rzeczywisty kod źródłowy zawiera ten sam mały nagłówek z kroku 1, co pierwszy nagłówek. Kompilator, gdy napotka ten specjalny nagłówek, odczytuje zamiast niego odpowiedni plik .pch. Oznacza to, że nie musi za każdym razem (ponownie) kompilować tych standardowych nagłówków.
W twoim przypadku wydaje się, że krok 1 nie powiódł się. Czy plik pośredniczący jest nadal obecny? W twoim przypadku prawdopodobnie tak by było
xxxxx.cpp
. Musi to być plik, który jest kompilowany/Yc:xxxxx.pch
, ponieważ jest to flaga kompilatora wskazująca, że jest to pierwszy krok procesu PCH. Jeślixxxxx.cpp
jest obecny i jest takim plikiem pośredniczącym, prawdopodobnie brakuje/Yc:
opcji kompilatora.źródło
Naprawić:
Upewnij się, że masz w projekcie xxxxx.cpp
Skompiluj xxxxx.cpp z flagą / Yc ( Utwórz prekompilowany nagłówek)
(kliknij prawym przyciskiem myszy xxxxx.cpp -> właściwości -> Prekompilowane nagłówki -> utwórz )
Skompiluj wszystkie inne pliki z flagą / Yu ( Użyj prekompilowanego nagłówka)
(kliknij prawym przyciskiem myszy projekt -> właściwości -> Prekompilowane nagłówki -> użyj )
źródło
źródło
Create (/Yc)
(aby przywrócić, a następnie użyj go ponownie)Tak, można go wyeliminować za pomocą opcji / Yc, jak wskazali inni, ale najprawdopodobniej nie trzeba go dotykać, aby to naprawić. Dlaczego otrzymujesz ten błąd w pierwszej kolejności bez zmiany jakichkolwiek ustawień? Być może „wyczyściłeś” projekt i spróbowałeś skompilować pojedynczy plik CPP. W takim przypadku wystąpiłby ten błąd, ponieważ brakuje teraz nagłówka prekompilatora. Po prostu zbuduj cały projekt (nawet jeśli się nie powiedzie), a następnie zbuduj pojedynczy plik cpp, a nie otrzymasz tego błędu.
źródło
W przypadku, gdy dzieje się to w przypadku kompilacji serwera (AppCenter) i korzystasz z CocoaPods, upewnij się, że Twój plik Podfile jest zarejestrowany.
AppCenter uruchamia polecenie „pod install” tylko wtedy, gdy znajdzie plik Pofile i NIE znajdzie folderu PODS w plikach.
Miałem folder zaewidencjonowany, ale ponieważ git automatycznie ignoruje pliki .pch (sprawdź .gitignore, aby to zweryfikować), mój plik .pch nie został wpisany.
Rozwiązałem swój problem, zmuszając pliki .pch do sprawdzenia go, ale usunięcie folderu PODS również powinno działać, ponieważ Appcenter uruchomi w takim przypadku polecenie instalacji pod.
Mam nadzieję, że to komuś pomoże.
źródło
Jeśli wszystko jest w porządku, ale ten błąd jest obecny, należy sprawdzić następną sekcję w pliku ****. Vcxproj:
W moim przypadku była to niepoprawna nazwa konfiguracji: tylko pierwsze słowo.
źródło
Wiem, że ten temat jest bardzo stary, ale ostatnio miałem do czynienia z tym w VS2015 i pomogło mi usunięcie folderów kompilacji i ponowne zbudowanie. Może się to zdarzyć z powodu próby zamknięcia programu lub zatrzymania / wstrzymania programu VS podczas budowania.
źródło
Szukałem pliku iOS PCH z tym samym problemem, jeśli jesteś tutaj taki jak ja, rozwiązaniem, które znalazłem, jest wyczyszczenie danych pochodnych; Zamknij symulator (y), przejdź do prefs xCode -> lokalizacje -> przejdź do ścieżki pliku danych pochodnych, zamknij xCode, usuń pliki w folderze danych pochodnych, uruchom ponownie i pozdrawiam :)
źródło
Wypróbuj Build> Clean Solution, a następnie Build> Build Solution. To działa dla mnie.
źródło