【发布时间】:2016-08-12 07:47:21
【问题描述】:
我有一个未在 XCode 8 中编译的 iOS 项目。如果我修复了编译问题,则它在 XCode 7 中不起作用。 但我需要让项目同时在 XCode 7 和 8 中运行。所以我尝试使用预处理器宏来进行条件编译
我已经在 Xcode Preprocessor Macros 部分定义了宏,如下所示
XCODE_VERS=$(XCODE_VERSION_MAJOR)
我的代码检查如下版本
#if XCODE_VERS == "0700"
@interface SampleTableCell : UITableViewCell
#else
@interface SampleTableCell : UITableViewCell<CAAnimationDelegate>
#endif
在 Xcode 8 中,XCODE_VERSION_MAJOR 被转换为 0800。这不是有效的八进制数。 它在 Xcode 7 中运行良好,但在 XCode 8 中,我收到以下编译错误
Xcode 8 中是否有使用 XCODE_VERSION_MAJOR 宏的解决方法。
【问题讨论】:
-
您似乎想检查您正在针对哪个 SDK 进行编译。您是否考虑过为此使用已经可用的预处理器宏?例如。 stackoverflow.com/questions/19789958
-
谢谢,而不是 Xcode 版本,正如你所建议的,我可以使用 iOS Base SDK (__IPHONE_OS_VERSION_MAX_ALLOWED) 来避免编译问题。但是 Xcode 版本相关的构建变量不能从 Xcode 8 开始使用。我已经向苹果提交了错误报告。您能否将您的评论作为答案回复。