3

概述

我正在开发由Carthage集成的多个级联动态框架集。我正在尝试调整这篇博文中的原则以及iOS 和 OS X 之间的 WWDC 视频共享代码

我的情况:

我有 3 个动态框架,它们以级联格式相互包含:

动态框架:DataManager包括动态框架:GDL90包括动态框架: EGL96

工作至今...

我正在做的事情的要点是采用单个目标并将其配置为构建适用于 iOS 和 Mac 的框架,并在此处解释

  • 基础 SDK:OSX
  • 支持的平台:machos iphoneos iphonesimucator
  • 有效架构:arm64 armv7 armv7s i386 x86_64

然后在您的测试目标下更改搜索路径:

  • 运行路径搜索路径:$(inherited) @executable_path/Frameworks @loader_path/Frameworks @executable_path/../Frameworks @loader_path/../Frameworks
  • 框架搜索路径:$(SDKROOT) $(inherited)

问题开始的地方

我将EGM96项目配置为为多个目标构建多个构建。这很好用并且编译得很好。一旦我们卷入迦太基,麻烦就开始了。

在我的GDL90项目中,我包含了来自 carthage 的EGM96

运行后,carthage update我最终得到以下文件:

  • ./Carthage/Build/Mac/EGM96.framework
  • ./Carthage/Build/iOS/EGM96.framework

我还将GDL90项目配置为进行多平台构建,但这就是错误开始的地方。我无法动态配置构建过程(到目前为止)以根据正确的目标(即 OS X 构建拉取自/Carthage/Build/Mac/EGM96.framework)拉入正确的框架版本。

我花了一些时间查看 Xcode 的构建变量,但还没有找到可行的解决方案。

需要注意的是,这些最初是iOS我在iOS框架中链接到 Xcode 中的项目,因此我最终得到了完全适当的错误:

ld: building for OSX, but linking in object file built for iOS, file '/Users/jstein/devel/DigitalCopilot/GDL90/Carthage/Build/iOS/EGM96.framework/EGM96' for architecture x86_64

对于我缺少的一些隐藏的构建变量,是否有一个简单的解决方案可以在编译时允许 Xcode 从适当的 carthage 构建路径中提取框架?

4

0 回答 0