我想有条件地包含iPhone应用程序的代码,具体取决于我正在编译的SDK版本。在Mac OS X上,有MAC_OS_X_VERSION_MIN_REQUIRED
预处理器宏,它被编译器设置为MACOSX_DEPLOYMENT_TARGET
构建设置的值。 iPhone上有同等的产品吗?
我在构建设置中将IPHONE_DEPLOYMENT_TARGET
设置为3.0,但Xcode正在将-D__IPHONE_OS_VERSION_MIN_REQUIRED=20000
和-mmacosx-version-min=10.5
传递给GCC。第一个不应该是30000
而第二个不应该是-miphoneos-version-min=3.0
吗?我做错了什么?
看起来我没有做错任何事。在为设备构建时,__IPHONE_OS_VERSION_MIN_REQUIRED
和-miphoneos-version-min
都已正确设置 - 使用iPhone模拟器SDK时,这只是错误的。我认为这是模拟器SDK中的一个错误。
答案 0 :(得分:12)
见Availability.h
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_2_0
等。
答案 1 :(得分:3)
为每个版本的OS定义了预处理器宏。例如,如果定义了__IPHONE_OS_3_0
,那么您将构建3.0 SDK(或者可能以后,我不确定)。
答案 2 :(得分:2)
对于它的价值,如果不存在这样一个宏,一个体面的解决方法是创建2个构建目标,并在其中一个中添加构建设置GCC_PREPROCESSOR_DEFINITIONS
,其值为{{1} }。然后在您的代码中,您可以这样做:
IPHONE_OS_3