To pytanie rozwinęło się w ciągu ostatnich kilku tygodni, aby objąć bardziej ogólne problemy z xcode4 (i aktualizowanie projektów ze starszych wersji xcodes).
Jednak wiele problemów można rozwiązać, postępując zgodnie z tym samym zestawem instrukcji.
Jeśli masz którykolwiek z poniższych problemów, wypróbuj metody z zaakceptowanej odpowiedzi:
- Xcode 4 nie archiwizuje aplikacji
- Xcode 4 tworzy archiwum bezużyteczne
- Xcode 4 nie tworzy pliku .ipa
- Xcode 4 nie może się skompilować z powodu błędów preprocesora
- Xcode 4 nie może znaleźć nagłówków
- Kompletny kod Xcode 4 nie działa
- Zależności projektu nie będą się kompilować
- Dodanie zależności powoduje którykolwiek z powyższych problemów
Oryginalne pytanie
Tytuł: „Nie znaleziono pliku problemu leksykalnego lub preprocesora” w Xcode 4
Mam projekt w Xcode 4, który będzie dobrze zbudowany i będzie działał na urządzeniu i symulatorze, ale podczas próby zarchiwizowania błędów podczas wyszukiwania plików nagłówków powiązanych z biblioteką statyczną:
In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15:
In file included from /Volumes/Development/Path/LBProject/LBFDefines.h:23:
In file included from /Volumes/Development/Path/LBProject/Classes/LBProjectAppDelegate.h:11:
In file included from /Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDirectoryManager.h:10:
/Volumes/Development/Path/LBProject/LBProject/../FKNDirectory/FKNDataModel.h:11:9: fatal error: 'Merchant.h' file not found [1]
#import "Merchant.h"
^
1 error generated.
Xcode podaje błąd
lexical or preprocessor issue file not found
Wiele osób w Google pokazuje ten problem, ale nie ma rozwiązania. Każdy znalazł rozwiązanie, a nawet wskazówkę.
Aktualizacja: Do user header
ścieżki wyszukiwania są ustawione ${BUILT_PRODUCTS_DIR}
we wszystkich konfiguracjach. Kompiluje się dobrze przy użyciu dowolnej konfiguracji, z wyjątkiem archiwizacji.
Aktualizacja 2: Merchant.h
to klasa Core Data, która jest generowana automatycznie, a zatem wewnątrz .xcdatamodeld
pakietu, jednak wszystkie nagłówki są kopiowane do publicznego katalogu nagłówków podczas budowania biblioteki.
źródło
Miałem ten sam problem w XCode 4: "Problem leksykalny lub preprocesor Nie znaleziono pliku MyFile.h". Jednak MyFile.m nie była biblioteką statyczną, tylko klasą standardową. A MyFile.m i MyFile.h zostały odpowiednio uwzględnione i zindeksowane w projekcie.
Więc ... opuściłem XCode i Symulator, potem je zrestartowałem i problem zniknął.
źródło
Zauważyłem, że problem zniknął, gdy zmieniłem ustawienie kompilacji docelowej „skanuj wszystkie pliki źródłowe w poszukiwaniu dołączeń” z nie na tak.
źródło
Udało mi się rozwiązać ten problem bez żadnych zmian w jakichkolwiek ustawieniach kompilacji, po prostu kopiując pliki .h do katalogu projektu w programie Finder. W ogóle NIE dodałem ich do projektu. Samo umieszczenie ich w katalogu systemu plików projektu wydawało się wystarczające, aby niejawne linkowanie Xcode działało poprawnie. Więcej szczegółów tutaj .
źródło
Miałem taki dziwny problem. Zmiana opcji „Skanuj wszystkie pliki zasobów ...” na Tak nie pomogła. Rzuciłem okiem na Framework Search Paths i zauważyłem, że tak
Wydawało się słuszne, ale wciąż zawodziło. Następnie spróbowałem zmienić kolejność 2 i 3 i nagle wszystko się udało. Więc nie jestem pewien, dlaczego tak się stało, ale chciałem dodać to do listy rzeczy do wypróbowania, jeśli pomoże to komuś innemu.
źródło
Moim rozwiązaniem była zmiana mojego
do
i wszystko znów zaczęło działać. Niezwykłe było to, że po kilkukrotnej budowie nagle przestał działać.
źródło
Problem rozwiązał się sam, kiedy ustawiłem
Ustawienia kompilacji-> Projekt-> Wyszukaj ścieżki do Tak
źródło
Miałem to samo - 2 cele w moim projekcie ( Project i ProjectTest of
GHUnit
). Kiedy mój schemat został skonfigurowany do programu Project , podczas importowania<GHUnitIOS/GHUnit.h>
wystąpił problem „nie znaleziono pliku spraw leksykalnego lub preprocesora” . Ale kiedy ustawiłem jako schemat ProjectTest , wszystko było OK. Więc dodałem teżGHUnitIOS.framework
w Project .źródło
Wygląda na to, że ścieżki wyszukiwania nagłówków są niepoprawne i nie zostały poprawnie skonfigurowane w ustawieniach kompilacji dla aktywnego schematu. Sprawdź je i zaktualizuj swoje pytanie przy użyciu aktualnych ustawień.
źródło
Mam podobne problemy z symulatorem, ale nie z urządzeniem, a moje pola ścieżki wyszukiwania nagłówka są puste (wydaje się być domyślne). Wydaje się jednak, że zmiana obszarów roboczych rozwiązała problem. Może mógłbyś spróbować stworzyć nowy obszar roboczy, dodać do niego swój projekt i zobaczyć, czy to pomoże. Teraz badam, dlaczego.
źródło
Otrzymałem błąd „Nie znaleziono pliku” dla jednego konkretnego pliku .h w moim projekcie. Rozwiązałem problem, usuwając ten plik .h z projektu (wybierając opcję „Usuń odniesienia”) i dodając go ponownie.
źródło
Dodając więcej wariantu: miałem dwa wystąpienia
foo.m
wCompile Source
fazie kompilacji, co spowodowało, że dla niektórych wystąpił komunikat „Nie znaleziono nagłówka”foo.h
.źródło
Kolejna szansa:
W projekcie obszaru roboczego: obserwuj w sekcji Cel dla sekcji Fazy budowy. Jak mówi wiele podręczników, musisz mieć fazę kopiowania plików, aby skopiować wszystkie nagłówki w inne miejsce, ponieważ iOS Framework nie może zawierać plików nagłówkowych do udostępnienia (tak jest w moim przypadku).
Wybierz dla opcji Kopiuj pliki jako miejsce docelowe opcję „Katalog produktów”. Lub inny katalog podobny do twojego, w którym będą znajdować się nagłówki.
To zadziałało dla mnie. Prawdopodobnie katalog kompilacji dla archiwum (lub wydania) jest zupełnie inny niż oczekiwano w kompilacji dla debugowania.
Sprawdź również w ustawieniach obszaru roboczego katalog kompilacji.
XD
źródło
U mnie ten problem wystąpił po dodaniu nowych plików do projektu; puste pliki .m i .h pochodzące z NSObject. Oto jak to rozwiązałem:
Następnie dodałem je ponownie i też zadziałało.
Zdecydowanie błąd w xCode ...
źródło