什么是链接Xcode中的选项的库?

时间:2016-01-17 03:13:41

标签: ios xcode frameworks binary libraries

从Xcode 7开始,Xcode中有一些库/框架链接选项

转到项目标签

中的应用Target
General -> Embedded Binaries
General -> Link Frameworks and Libraries
Build Phases -> Target Dependencies
Build Phases -> Link Binary with Libraries

以下是我找到的一些方法

  • 使用Alamofire显示Embedded Binaries选项
  

Alamofire.framework作为目标依赖项,链接框架和嵌入式框架自动添加到复制文件构建阶段,这是构建模拟器和设备所需的全部内容。

  • Creating your first iOS Framework显示将Library.xcodeproj添加到工作区,然后Build Phases -> Link Binary with Libraries

  • Carthage Tutorial: Getting Started显示将Library.framework拖入General -> Link Frameworks and Libraries。似乎General -> Link Frameworks and LibrariesBuild Phases -> Link Binary with Libraries相同

  • Carthage似乎可以区分iOS和OS X.

  

如果您正在为OS X构建:在您的应用程序目标上“常规”   设置选项卡,在“嵌入式​​二进制文件”部分中,拖放每个   您想要从磁盘上的Carthage / Build文件夹中使用的框架。

     

如果您正在为iOS,tvOS或watchOS构建:在您的应用程序上   目标的“常规”设置标签,在“链接的框架和   库“部分,拖放您想要使用的每个框架   磁盘上的Carthage / Build文件夹。

阅读Linking to a Library or Framework,我们知道这些选项是关于将框架链接到我们的应用程序/框架中。

但它们之间有什么区别?对于所有选项,任何一个选项都是catch all吗?

1 个答案:

答案 0 :(得分:17)

对于使用carthage构建的动态框架,我通常使用此设置:

  • 将库链接到您要使用它的任何目标。您需要这样才能在代码中导入框架。
  • 仅在包含应用目标中嵌入库。这实际上会复制您的应用包中的框架。如果你没有嵌入它,你的应用程序将在启动时崩溃,因为你的框架无法找到。

只有app目标负责嵌入所有框架及其依赖项。这样,如果扩展程序和应用程序都使用框架,它将仅与应用程序一起分发。

对于Xcode界面:

  • 将框架拖入常规 - >嵌入式二进制文件将把框架添加到" Link Binary With Libraries"和#34;嵌入框架"构建阶段
  • 将框架拖入常规 - >链接的框架和库将仅将框架添加到" Link Binary With Libraries"建设阶段。

“常规”下的视图似乎从“构建阶段”选项卡中填充,因此您可以使用其中任何一个。

希望这是有道理的。

编辑:目标依赖项只是在构建当前目标之前需要构建的目标。因此,您的应用目标会在此处列出其扩展名,以便在您构建应用时构建扩展程序。