【发布时间】:2015-03-04 18:35:18
【问题描述】:
我正在查看 Apple 的 Lister (for Apple Watch, iOS, and OS X) 示例。该示例针对 iOS 和 OS X 执行测试:
#import <TargetConditionals.h>
#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
@import ListerKit;
#elif TARGET_OS_MAC
@import ListerKitOSX;
#endif
但是,没有针对 TARGET_OS_WATCH 或类似的测试。在TargetConditionals.h 中搜索watch 不会产生任何命中:
$ cat /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
/SDKs/iPhoneOS7.1.sdk/usr/include/TargetConditionals.h | grep -i watch
$
来自TargetConditionals.h,我知道有:
这些条件指定生成的代码将在哪个操作系统中
跑步。 MAC/WIN32/UNIX 条件是互斥的。嵌入式/iPhone
条件是 TARGET_OS_MAC 的变体。
TARGET_OS_MAC - 生成代码将在 Mac OS 下运行
TARGET_OS_WIN32 - 生成代码将在 32 位 Windows 下运行
TARGET_OS_UNIX - 生成代码将在某些非 Mac OS X unix 下运行
TARGET_OS_EMBEDDED - 生成代码将在嵌入式操作系统变体下运行
TARGET_OS_MAC
TARGET_OS_IPHONE - 生成代码将在 iPhone OS 下运行
是 TARGET_OS_MAC 的变体。
TARGET_IPHONE_SIMULATOR - 生成在 iPhone 模拟器下运行的代码
问题:苹果手表有预处理器吗?
我使用ios 进行标记,但我不确定这是否是此问题的正确操作系统。
以下列表来自 iPhone 的TargetConditionals.h。 Simulator 和 OS X 类似(它们只是将不同的位设置为 1):
#define TARGET_OS_MAC 1
#define TARGET_OS_WIN32 0
#define TARGET_OS_UNIX 0
#define TARGET_OS_EMBEDDED 1
#define TARGET_OS_IPHONE 1
#define TARGET_IPHONE_SIMULATOR 0
问题:手表使用TARGET_OS_EMBEDDED吗?手表省略TARGET_OS_IPHONE吗?
【问题讨论】:
-
当
clang正在编译时,-target ${ARCH}-apple-watchos6.2命令行参数和-mwatchos-version-min=6.2参数会导致定义正确的宏(并且模拟器构建传递-mwatchsimulator-version-min=6.2arg 而不是第二个)
标签: ios ios preprocessor watchkit c-preprocessor watchos-2