无法在 SwiftPM 的 ObjC 模块中导入 AppKit
Posted
技术标签:
【中文标题】无法在 SwiftPM 的 ObjC 模块中导入 AppKit【英文标题】:Cant import AppKit in ObjC-module of SwiftPM 【发布时间】:2018-01-13 13:50:37 【问题描述】:我尝试使用以下代码将 AppKit 导入 Swift-Packet 模块的标头中:
#import <AppKit/AppKit.h>
但是编译器抛出了这个错误:
fatal error: 'AppKit/AppKit.h' file not found
我应该以某种方式在 Package 的 Package.swift 文件中将其指定为依赖项吗?
提前致谢
迈克尔
【问题讨论】:
【参考方案1】:请注意,Swift 包管理器 (SPM) 是为服务端 Swift 设计的,而不是为客户端设计的。具体来说,AppKit 可能没有移植到服务器端 Swift,因此您无法将 AppKit 与 SPM 一起使用。 AppKit 是 Objective-C 运行时的一部分。 SPM 在构建过程中不考虑 Objective-C 运行时。
来自swift.org, Platform Support:
我们的目标是在所有平台上为 Swift 提供源代码兼容性,即使实际实现机制可能因平台而异。主要示例是 Apple 平台包含 Objective-C 运行时,这是访问 Apple 平台框架(如 UIKit 和 AppKit)所必需的。在其他平台上,例如 Linux,没有 Objective-C 运行时存在,因为它不是必需的。
Swift 核心库项目旨在通过提供基本 Apple 框架(例如 Foundation)的可移植实现而不依赖于 Objective-C 运行时来扩展 Swift 的跨平台功能。尽管核心库处于早期开发阶段,但它们最终将为 Swift 代码在所有平台上提供改进的源代码兼容性。
【讨论】:
【参考方案2】:我刚刚通过在 Xcode 中链接这个框架解决了这个问题。 我不知道如何在 Package.swift 文件中指定它,但知道它有效。
问候
【讨论】:
以上是关于无法在 SwiftPM 的 ObjC 模块中导入 AppKit的主要内容,如果未能解决你的问题,请参考以下文章
为啥 VS Code 无法在我的程序中导入 timeit 模块?