我正在查看苹果的Lister(适用于Apple Watch、iOS和OS X)示例。该示例对iOS和OS X执行测试:
#import <TargetConditionals.h>
#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
@import ListerKit;
#elif TARGET_OS_MAC
@import ListerKitOSX;
#endif
然而,没有针对或类似的测试。在中搜索没有结果:
$ 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条件是互斥的。 EMBEDDED / 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的嵌入式OS变体下运行 TARGET_OS_IPHONE - 生成的代码将在TARGET_OS_MAC的iPhone OS变体下运行。 TARGET_IPHONE_SIMULATOR - 为在iPhone模拟器下运行生成代码 问题:Apple的手表有没有预处理器?
我正在使用ios标记,但我不确定这是否是正确的操作系统。
以下列表是从iPhone的
TargetConditionals.h
编译而来的。模拟器和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.2
参数而不是第二个参数)。 - Top-Master