2013-10-18 9 views

Antwort

10

Wenn es Ihnen nichts ausmacht, Google Protobuf selbst zu erstellen, dann ist es eine gute Alternative zur Verwendung von Cocoapods, das Bash-Skript hier auszuführen.

https://gist.github.com/BennettSmith/7150245

Dieses Skript wird eine richtige Build von Google Protobuf produzieren, die die i386, ARMv7, armv7s, arm64 und x86_64-Architekturen unterstützt. Es wird eine statische Bibliothek erzeugen, die universell ist. Es wird auch den Protoc-Compiler für die Verwendung unter OS X erzeugen.

+0

Dieses Skript funktioniert wie ein Zauber. Vielen Dank!!! –

+1

Ich frage mich nur, ob dieses Skript für Protobuf 2.4.1 funktioniert? Kann ich den Build für x86_64 entfernen (nur für iOS). –

+0

Ich bin mir nicht sicher über 2.4.1. Gibt es einen bestimmten Grund, diese Version anstelle des neueren 2.5.0 zu verwenden? –

9

Sie können Unterstützung für Google-Protokollpuffer zu einem Xcode 5-Projekt hinzufügen, indem Sie Cocoapods verwenden, indem Sie die folgende Zeile zu Ihrer Poddatei hinzufügen.

pod 'GoogleProtobuf', '~> 2.5.0' 

Dies wird die C++ - Version des Protobuf-Code in eine Pod für Ihr Projekt legen. Es fügt auch den protoc Compiler in dem Ordner Pods/GoogleProtobuf/bin/protoc innerhalb Ihres Projekts hinzu.

Sie können in Ihrem Projekt eine benutzerdefinierte Erstellungsregel erstellen, die die .proto Dateien automatisch in .ph.{h,cc} Dateien konvertiert. Hier ist, wie ich das gemacht habe:

Richten Sie eine Erstellungsregel auf "Prozess Quelldateien mit Namen, die übereinstimmen: * .proto Using Custom Script". Das Skript sollte die folgenden Angaben enthalten:

$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.h 
$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.cc 

Alle .proto Dateien, die Sie in Ihrem Projekt nun auf C automatisch konvertiert werden ++ und dann als Teil zusammengestellt:

cd ${INPUT_FILE_DIR} 
${SRCROOT}/Pods/GoogleProtobuf/bin/protoc --proto_path=${INPUT_FILE_DIR} ${INPUT_FILE_PATH} --cpp_out=${INPUT_FILE_DIR}/cpp 

Stellen Sie die Ausgabedateien, schließen Folgendes ein von deinem Build.

+0

Danke! Ich werde es versuchen. –

+0

Ich habe hier ein Problem mit der Lösung entdeckt. Der Build, der in der Cocoapod ausgeführt wird, ist nur aus dem iOS-Simulator verwendbar. Ich arbeite an einer Lösung für dieses Problem. Für den Moment könnten Sie die andere Methode verwenden, die ich in einer alternativen Antwort unten gepostet habe. –

+0

Hallo Smith, ich habe protobuf (2.4.1) mit CocoaPods für iPad gebaut und es funktioniert. Ich werde mir Ihre neue Lösung ansehen. Vielen Dank! –