2011-07-01 17 views
5

Mogę użyć wstępnie zbudowanego frameworka podanego na stronie projektu plcrashreporter podczas kompilacji dla urządzenia, ale nie dla symulatora. Mam ten sam problem described here.Nie mogę skompilować plcrashreporter w Xcode 4


Zakładam, że wstępnie skonstruowany framework nie obsługuje architektury symulatora, więc pobrałem źródło plcrashreporter. Otworzyłem projekt Xcode i wybrałem cel CrashReporter-iOS-Simulator > iPhone 4.3 Simulator. Kiedy próbuję zbudować projekt, otrzymuję ten błąd:

libtool: unknown option character `D' in: -D__IPHONE_OS_VERSION_MIN_REQUIRED=30000

otrzymuję ten sam błąd, gdy próbuję zbudować większość innych celów (na przykład do urządzenia).


Następnym krokiem było dodanie plików źródłowych do mojego projektu. Nie mam już wyżej wspomnianego problemu; Jednak uzyskać ten błąd przy próbie kompilacji:

fatal error: 'crash_report.pb-c.h' file not found [2] 
#import "crash_report.pb-c.h" 
     ^
1 error generated. 
Command clang failed with exit code 1

Plik crash_report.pb-c.h który jest wymieniony w komunikacie o błędzie po prostu nie istnieje; Przeszukałem drzewo źródeł plcrashreporter i Internet. Dlatego muszę założyć, że plik ten powinien zostać wygenerowany w jakiś sposób, ale nie mogę zrozumieć, w jaki sposób.

(Wypowiadając się w PLCrashReport.m linię, na której crash_report.pb-c.h jest wliczone wyniki w wielu innych błędów kompilacji.)

Odpowiedz

5

Masz rację, że plik nie istnieje normalnie, ani nie crash_report.pb-c.c istnieć, co będzie twój następny błąd po tym.

Pliki crash_report.pb.h i crash_report.pb.c są generowane podczas kompilacji za pośrednictwem reguły budowania. Aby je utworzyć, musisz dodać niestandardowy skrypt do procesu budowania.

Najpierw upewnij się, że masz protoc-c w folderze plcrashreporter twojego projektu (plcrashreporter-1.0/Dependencies/protobuf-2.0.3/bin/protoc-c). Pochowali to głęboko. Oto, jaki będzie twój skrypt.

Następnie znajdź plik crash_report.proto. To jest główne wejście, które protoc-c będzie używać do tworzenia brakujących plików. Możesz wziąć ten katalog i umieścić go ręcznie w swoim skrypcie, LUB możesz stworzyć regułę uruchamiania skryptu na każdym pliku *.proto. Robię to drugie.

Następnie edytować swoje zasady budowania włączyć skrypt, który działa protoc-c z flagą --c_out="${DERIVED_FILES_DIR}" i plik crash_report.proto jako dwóch wejść, wyjście to crash_report.pb-c.h i crash_report.pb-c.c do tego samego katalogu, w którym plik crash_report.proto to, co już powinno być dostępne w twoim projekcie.

Zasady kompilacji w Xcode 4 (i nowszych) znajdują się w zakładce reguł budowania celu twojego projektu. Dodajesz regułę kompilacji przed wszystkimi innymi regułami kompilacji. Oto co kopalnia wygląda w Xcode:

Here's what mine looks like in Xcode.

Prawdopodobnie będziesz musiał bawić z katalogu