2010-12-16 8 views
3

Ich habe eine statische Bibliothek mit zwei verschiedenen Zielen: eines für das Gerät zu bauen, eines für den Simulator zu bauen. Schließlich habe ich ein Ziel, das die beiden Ziele mit Lipo kombiniert.Kann ich festlegen, dass das Gerät oder der Simulator immer zum Erstellen eines bestimmten Ziels verwendet wird?

Derzeit muss ich jedes Ziel manuell erstellen und angeben, dass das Simulatorziel für den Simulator erstellt werden soll, und das Geräteziel sollte für das Gerät erstellt werden.

Wenn ich eines dieser Ziele als Build-Abhängigkeit verwende, werden beide entweder für das Gerät oder für den Simulator erstellt. Gibt es eine Möglichkeit, dass ich jedes Ziel zwingen kann, immer für das Gerät/den Simulator zu bauen?

Antwort

2

Dies wird durch Verwendung der Befehlszeile xcodebuild Dienstprogramm leicht getan werden kann:

$xcodebuild -target <target name> -configuration <configuration name> -sdk iphonesimulator build 
$xcodebuild -target <target name> -configuration <configuration name> -sdk iphoneos build 

Dann für Ihre Lipo Ziel Sie ein Skript BUILD-Phase hinzufügen in dem Sie die zwei Befehle ausführen können, bevor Sie sie mit Lipo kombinieren.

Wenn Ihre ersten beiden Ziele nur aus Gründen der Erstellung mit dem richtigen SDK getrennt sind, können Sie einen davon entfernen und denselben Buildbefehl zweimal ausführen, indem Sie nur ein anderes SDK festlegen. Sie sollten auch darüber nachdenken, Lipo in einem Makefile auszuführen, in welchem ​​Fall Sie das Lipo-Ziel ebenfalls nicht benötigen würden.

grüße

-1

Sie können den Build einschränken, indem Sie bestimmte Bedingungen in den Code einfügen. Aber sie werden funktionieren, sobald Sie die App auf dem Gerät installiert haben.

Sie können einige Bedingungen wie die folgende in der "Anwendung didFinishLaunch" -Methode setzen.

#if TARGET_IPHONE_SIMULATOR 
if([[[UIDevice currentDevice] systemVersion] floatValue] == requierdSimulatorVersion){ 

} 
else{ 
    exit(1); 
} 
#else 
if([[[UIDevice currentDevice] systemVersion] floatValue] == requierdDeviceVersion){ 

} 
else{ 
    exit(1); 
} 

#endif 

Grüße,

Satya

+0

Die Frage ist über Compile/Link Zeit, nicht Laufzeit. –

+0

Kann ich wissen, wer die Abstimmung verringert hat? Ich habe bereits gesagt, dass der Code nur zur Laufzeit funktioniert. – Satya