Ich möchte abhängig von der Version des SDK, für das ich kompiliere, Code für eine iPhone-App mit Vorbehalt hinzufügen. Unter Mac OS X gibt es den Präprozessor-Makro MAC_OS_X_VERSION_MIN_REQUIRED
, der vom Compiler auf den Wert der Einstellung MACOSX_DEPLOYMENT_TARGET
build gesetzt wird. Gibt es eine Entsprechung auf dem iPhone?
Ich habe in den Build-Einstellungen IPHONE_DEPLOYMENT_TARGET
auf 3.0 gesetzt, aber Xcode übergibt -D__IPHONE_OS_VERSION_MIN_REQUIRED=20000
und -mmacosx-version-min=10.5
an GCC. Sollte nicht die erste 30000
und die zweite -miphoneos-version-min=3.0
sein? Was mache ich falsch?
Sieht aus, als hätte ich nichts falsch gemacht. __IPHONE_OS_VERSION_MIN_REQUIRED
und -miphoneos-version-min
werden beim Erstellen für ein Gerät beide korrekt festgelegt - bei Verwendung des iPhone Simulator SDK ist es nur falsch. Ich denke, es ist ein Fehler im Simulator SDK.
Es gibt Präprozessormakros, die für jede Version des Betriebssystems definiert sind. Zum Beispiel, wenn __IPHONE_OS_3_0
definiert ist, dann bauen Sie gegen das 3.0 SDK (oder möglicherweise später, ich bin nicht sicher).
Wenn es ein solches Makro nicht gibt, ist es sinnvoll, zwei Build-Ziele zu erstellen. In einem davon fügen Sie die Build-Einstellung GCC_PREPROCESSOR_DEFINITIONS
mit einem Wert wie IPHONE_OS_3
hinzu. Dann in Ihrem Code können Sie tun:
Tags und Links iphone xcode cocoa cocoa-touch