【发布时间】:2016-09-13 00:26:18
【问题描述】:
我不知道这是我的配置问题(可能)还是 Xcode 8 的错误(也可能)。
我正在将一个 iOS 框架 HLSpriteKit 移植到 Mac 上。因为项目中有几个特定于 iOS 的文件,而现在一个特定于 Mac,所以我选择创建两个单独的目标,一个用于 iOS,一个用于 macOS。
对于共享代码,我想使用 #if TARGET_OS_OSX 来定位 macOS 并使用 #else 来定位其他所有代码:
当我尝试使用我的 iOS 目标构建它时,效果很好。但是当我尝试使用 Mac 目标构建时(如您在屏幕截图的左上角所见),它失败了。即使我正在为 Mac 构建,它似乎也没有通过 #if TARGET_OS_OSX 检查。更好的是,当我 cmd-click TARGET_OS_OSX 时,它会将我带到带有 #define TARGET_OS_OSX 1 行的 macOS 10.12 TargetConditionals.h 文件。那么为什么会失败呢?
我的问题:
Xcode 在编译时选择哪个 TargetConditionals.h 文件(即:iOS 或 macOS)?我假设它完全基于我在方案/设备选择器中选择的设备,可用设备列表基于给定目标的 Build Settings -> Supported Platforms。对吧?
Xcode 构建我的项目是否与文本编辑器自动完成(即:cmd-click 支持)不同让我相信?
我应该换一种方式吗?
【问题讨论】:
标签: ios objective-c xcode macos xcode8