【问题标题】:Xcode 8 XCODE_VERSION_MAJOR macro - Compilation issueXcode 8 XCODE_VERSION_MAJOR 宏 - 编译问题
【发布时间】: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 开始使用。我已经向苹果提交了错误报告。您能否将您的评论作为答案回复。

标签: ios xcode xcode8


【解决方案1】:

使用 __IPHONE_OS_VERSION_MAX_ALLOWED 宏而不是 XCODE_VERSION_MAJOR 构建属性解决了编译问题。

现在该项目可在 Xcode 7 和 Xcode 8 中使用。

由于 XCODER_VERSION_MAJOR 和其他几个属性存储了包含无效八进制数的 XCODE 版本,因此这些属性将在 Xcode 8 中变得不可用。已经为此创建了错误。

【讨论】:

    猜你喜欢
    • 2020-11-18
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多