Xcode - Cocoapods如何编译pods?

问题描述 投票:2回答:1

我有一个用cocoapods构建的xcworkspace(pod install)。我无法弄清楚xCode如何知道当我构建MyProject时它还必须构建Pods项目?

假设:

在构建阶段“链接二进制与库”部分的MyProject主目标中,我可以看到“Pods_MyProject.framework”,它指的是由Pods(项目)Pods-MyProject目标构建的.framework(它是否正确?)。这个目标在他的“目标依赖关系”中有所有的pod。

但我仍然不明白两件事

  1. Xcode如何知道我在构建MyProject时必须首先构建Pods-MyProject? (MyProject主目标“Target Dependencies”部分没有任何内容)

这是“MyProject”的构建阶段选项卡(其真实名称是“clicktube”):

enter image description here

  1. “Pods_MyProject.framework”如何包含所有pod,而其“Link Binary with Libraries”部分几乎是空的?

Pods-MyProject“链接库”部分:

enter image description here

ios xcode cocoapods
1个回答
1
投票

这是有趣的事情:

https://developer.apple.com/library/content/featuredarticles/XcodeConcepts/Concept-Workspace.html#//apple_ref/doc/uid/TP40009328-CH7-SW1

Xcode检查构建目录中的文件以发现隐式依赖项。例如,如果工作空间中包含的一个项目构建了由同一工作空间中的另一个项目链接的库,则Xcode会在构建其他项目之前自动构建库,即使构建配置未使此依赖项显式化也是如此。如有必要,您可以使用显式构建设置覆盖此类隐式依赖项。对于显式依赖项,您必须创建项目引用。

有两种类型的依赖:显式和隐式。您可以在“目标依赖项”中指定显式的。 XCode通过查看“使用库链接二进制文件”来发现隐式依赖项,然后决定项目的构建顺序。

“Pods_MyProject.framework”如何包含所有pod,而其“Link Binary with Libraries”部分几乎是空的?

如果你查看Pods.xcodeproj,你通过podfile安装的每个框架都有一个目标。然后是Pods_MyProject.framework目标,它明确依赖于所有这些框架。

© www.soinside.com 2019 - 2024. All rights reserved.