Xcode 将框架链接和嵌入到工作区中的应用程序的构建过程

Xcode build process for linking & embedding framework to app in workspace

我已经将我正在开发的应用程序中的一些功能分离到一个独立的框架中。框架和应用程序都包含在一个工作区中。如何以与机器无关的方式将此框架包含在我的构建中?

我一直在做的是将框架添加到我的客户端应用程序的嵌入式二进制文件中,正如 SO 上的许多帖子所建议的那样。这很好用,直到您开始在另一台机器上工作,此时找不到框架所在的随机生成的 'DerivedData' 目录,您必须重新创建 link。这将成为一个非常令人厌烦的过程。

我正在考虑为此目的使用 CocoaPods,但除非我读错了,否则你不能只用 podspec 引用本地项目;该项目需要驻留在已知的来源/回购协议上。

所以基本上我想知道这里的人是如何打造一个多项目构建过程的,而不是 linked 到特定开发机器的目录结构。

其实,你确实可以拥有私人Pods。关于如何执行此操作的大多数教程 usually keep these private Pods within private repos on GitHub, but you can also host them on another Git (non-GitHub) server

至于 DerivedData 目录问题,听起来您是通过构建设置(即类似“-framework ~/Library/Developer/Xcode/DerivedData/MyFramework-$$@#$@#@$#/MyFramework.framework”的内容)包含框架。

您只需点击应用目标设置的 "Build Phases" 部分,然后点击 "add"(或“+”)按钮,您就会看到您的(通过相同的工作区)框架或库,您可以添加到该列表中。 More information can be seen in this Apple documentation.

所以我找到了一个有效的解决方案。问题是我的客户端应用程序项目引用了相对于项目本身的框架文件。

我参考(和嵌入)我的框架所采取的最少步骤明显少于我见过的一些解决方案。

  1. 在我的客户端应用程序的目标中(在常规选项卡上),将框架添加到 'Embedded Libraries' 部分。这还将在项目导航器中添加对该框架的引用。
  2. Select 在步骤 1 中添加到项目导航器的引用,并将其位置更改为 'Relative to Built Products'。可选择将框架移动到客户端应用程序项目的 'Frameworks' 文件夹,其余框架都位于该文件夹中。

第二步确保构建查找相对于构建产品的框架,而不是相对于其他东西,其位置可能因机器/源副本而异。