ios - Xcode:通用框架:仅针对特定平台有条件地链接其他 .framework 依赖项

标签 ios xcode macos

在使用针对所有苹果平台的通用框架时,我希望有条件地链接到另一个仅适用于 OSX 的 .framework 依赖项。

我可以将此依赖项添加到链接框架和库并将其标记为可选。但是,我不知道应该在 Build Settings 中添加或修改什么自定义字段,以便仅针对特定平台实际链接此 .framework。 (没有任何东西,因为依赖是可选的 - 构建总是会失败并显示 ld: framework not found)

有什么建议吗?

作为一种解决方法,我可以将其分为两个目标:一个用于 OSX,一个用于任何其他目标,但这已经破坏了通用框架的概念。

最佳答案

这可以在不借助链接框架和库的情况下实现。

虽然我们有一个包含所有支持平台的通用目标:macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator,但请考虑我们只想链接 OSX 框架的情况。

为了链接我们的框架,我们需要两件事:

  1. 将所需的 .framework 路径添加到 Framework Search Path
  2. -framework YourFrameworkName 添加到 Other Linker Flags

build设置允许我们为特定平台指定条件字段。当展开单个字段并将鼠标悬停在调试/发布上时,您将能够看到加号出现,按下加号将带您进入选择器,您可以在其中选择所需的平台。

为 OSX 链接 RealmRealmSwift 的假设添加build设置将如下所示:

(Intel 64 位 arch 和 Any macOS SDK 都代表为 OSX 构建)

关于ios - Xcode:通用框架:仅针对特定平台有条件地链接其他 .framework 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370662/

相关文章:

java - OSX/Eclipse/JDK/无法从 bash 运行 HelloWorld

iphone - 在 iPhone 的 LinkedIn 集成中共享图像

ios - Alpha 在 UITableViewCell 中不起作用

xcode - 验证 Bash 脚本中的 Xcode 命令行工具安装

Xcode Beta 经常挂起/SourceKitService 高 cpu

ios - 如何使用 UI 按钮在 swift 中调用新 Controller ?

ios - 我应该在播放列表实体中使用什么删除规则?

ios - 苹果开发者成员(member)资格到期

macos - Mac w/PostgreSQL flush/empty cache for performance tuning

swift - HTML 字符串在 MAC Catalyst 中不起作用