在使用针对所有苹果平台的通用框架时,我希望有条件地链接到另一个仅适用于 OSX 的 .framework
依赖项。
我可以将此依赖项添加到链接框架和库并将其标记为可选。但是,我不知道应该在 Build Settings
中添加或修改什么自定义字段,以便仅针对特定平台实际链接此 .framework
。 (没有任何东西,因为依赖是可选的 - 构建总是会失败并显示 ld: framework not found
)
有什么建议吗?
作为一种解决方法,我可以将其分为两个目标:一个用于 OSX,一个用于任何其他目标,但这已经破坏了通用框架的概念。
最佳答案
这可以在不借助链接框架和库的情况下实现。
虽然我们有一个包含所有支持平台的通用目标:macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator
,但请考虑我们只想链接 OSX 框架的情况。
为了链接我们的框架,我们需要两件事:
- 将所需的
.framework
路径添加到 Framework Search Path - 将
-framework YourFrameworkName
添加到 Other Linker Flags
build设置允许我们为特定平台指定条件字段。当展开单个字段并将鼠标悬停在调试/发布上时,您将能够看到加号出现,按下加号将带您进入选择器,您可以在其中选择所需的平台。
为 OSX 链接 Realm
和 RealmSwift
的假设添加build设置将如下所示:
(Intel 64 位 arch 和 Any macOS SDK 都代表为 OSX 构建)
关于ios - Xcode:通用框架:仅针对特定平台有条件地链接其他 .framework 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370662/