我无法判断这是否是我的配置问题(可能)或Xcode 8的错误(也可能)。
我正在努力将iOS框架HLSpriteKit移植到Mac上。因为项目中有几个特定于iOS的文件,现在是一个特定于Mac的文件,我选择创建两个单独的目标,一个用于iOS,一个用于macOS。
对于共享代码,我想使用#if TARGET_OS_OSX
来定位macOS,并#else
用于其他所有内容:
当我尝试使用我的iOS目标构建它时,效果很好。但是当我尝试使用Mac目标进行构建时(如截图左上角所示),它会失败。即使我正在为Mac构建,它似乎也未能通过#if TARGET_OS_OSX
检查。更好的是,当我单击TARGET_OS_OSX
时,它会转到带有行#define TARGET_OS_OSX 1
的macOS 10.12 TargetConditionals.h文件。那为什么会失败?
我的问题:
在编译时,Xcode选择哪个TargetConditionals.h文件(即:iOS或macOS)?我的假设是纯粹基于我在Scheme / Device选择器中选择的设备,可用设备列表基于 Build Settings - >支持的平台,用于给定目标。右
Xcode是否构建我的项目与文本编辑器自动完成(即:cmd-click支持)让我相信?
我应该采用不同的方式吗?
答案 0 :(得分:0)
它不起作用,因为TARGET_OS_OSX也是为iOS定义的。
尝试用户定义的MACRO或使用以下内容。
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
// iOS code here
#else
// OS X code here
#endif