Xcode为iOS或Mac构建变量以支持carthage

时间:2015-08-24 13:43:59

标签: ios xcode macos frameworks carthage

概述

我正在开发由 Carthage 集成的多个级联动态框架集。我试图调整此blog post和WWDC视频Sharing code between iOS and OS X

中的主体

我的情况:

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

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

迄今为止的工作......

我正在做的事情就是采取单一目标并将其配置为为iOS和Mac构建框架explained here

  • 基础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 项目来进行多平台构建,但那是错误开始的地方。我无法动态配置构建过程(到目前为止),以根据正确的目标(即从/Carthage/Build/Mac/EGM96.framework拉出OS X构建版本)引入正确的框架版本。

我花了一些时间浏览build variables的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构建路径中拉出框架?

0 个答案:

没有答案