Xcode - Cocoapods如何编译pods?

3
我有一个使用cocoapods(pod install)构建的xcworkspace。问题是我不知道xCode如何知道在构建MyProject时也必须构建Pods项目?
假设:在MyProject的主目标中,在生成阶段的“链接二进制文件库”部分,我可以看到“Pods_MyProject.framework”,它引用了由Pods(该项目)构建的.framework,Pods-MyProject目标(是否正确?)。该目标在其“目标依赖项”中具有所有的pods。
但我仍然不明白两件事:
1. xCode如何知道在构建MyProject之前必须先构建Pods-MyProject?(在MyProject的主目标“目标依赖项”部分没有任何内容)
这是“MyProject”(实际名称为“clicktube”)的生成阶段选项卡:

enter image description here

  1. "Pods_MyProject.framework"如何包含所有的pods,而它的"Link Binary with Libraries"部分几乎为空?

Pods-MyProject的"Link with Libraries"部分:

enter image description here

1个回答

1
这是一个有趣的事情:

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

Xcode检查构建目录中的文件以发现隐式依赖关系。例如,如果工作区中包含的一个项目构建了一个库,并被同一工作区中的另一个项目链接,即使构建配置不明确表明此依赖关系,Xcode也会自动在构建其他项目之前构建该库。如果必要,您可以使用显式构建设置覆盖此类隐式依赖项。对于显式依赖项,您必须创建项目引用。
有两种类型的依赖关系:显式和隐式。您可以在“目标依赖项”中指定显式依赖项。隐式依赖项是由XCode通过查看“链接二进制文件库”来发现的,然后它决定将项目按照什么顺序进行构建。
如果您查看Pods.xcodeproj,每个通过podfile“安装”的框架都有一个目标。然后有一个Pods_MyProject.framework目标,它明确依赖于所有这些框架。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接