【问题标题】:Added macOS target to mixed iOS project -- why does it not find Objective-C symbols?向混合 iOS 项目添加了 macOS 目标——为什么找不到 Objective-C 符号?
【发布时间】:2017-08-01 02:21:14
【问题描述】:

我们有一个为 iOS 目标创建的混合 Swift/Objective-C 库项目。到目前为止一切顺利。

现在,因为我们认为在我们的开发 Mac 上测试(并且可能使用)来自 Swift REPL 的库会很好,所以我们决定为 macOS 添加目标。特别是在this guide 之后,我们确保:

  1. 复制主目标和测试目标。
  2. 调整目标操作系统和版本。
  3. 将对复制的 plist 的引用更改回项目主 plist。
  4. 已检查所有标题是否位于 Build Phases/Headers 中的相同位置。
  5. 更改为将伞形标题(用于 Objective-C 部分)中的 UIKit 导入 Foundation。

但是,macOS 目标仍然无法构建:我们的 Swift 代码中出现了一堆“未解决的标识符”错误,指向在 Objective-C 代码中定义的符号。

在为 Objective-C 子模块提供了自己的模块映射和伞头之后,单个符号错误消失了,我们在导入时得到“没有这样的模块”错误。

我们没有看到的是编译器错误 Objective-C 代码。 iOS 目标仍然构建得很好。

我们在这里缺少什么?我们必须对框架也为 macOS 构建的框架进行哪些更改?

【问题讨论】:

    标签: objective-c swift xcode macos build


    【解决方案1】:

    有两个问题。

    1. SWIFT_INCLUDE_PATHS(GUI:构建设置 > Swift 编译器 - 搜索路径 > 导入路径)未在 macOS 目标上设置,即使它是从 iOS 目标复制的。

      将其设置为相同的值($(SRCROOT)/modulefolder/,递归)使构建过程获取 Objective-C 代码。

    2. 并非所有 Objective-C 文件都分配给 macOS 目标。以通常的方式修复。

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 1970-01-01
      • 2013-12-15
      • 2016-01-06
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多