概述
我正在开发由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 构建路径中提取框架?