2016-11-02 47 views
2

我有一個用cocoapods(pod安裝)構建的xcworkspace。我無法弄清楚xCode是如何知道當我構建MyProject時它還必須構建Pods項目?Xcode - Cocoapods如何編譯pod?

假設:

在構建階段「鏈接二進制與圖書館」 MyProject的主要目標部分,我可以看到「Pods_MyProject.framework」,它由吊艙(項目)豆莢,MyProject的是指.framework構建目標(是否正確?)。這個目標在他的「目標依賴」中有所有的豆莢。

但我還是不明白兩件事

  1. 的Xcode怎麼知道,當我建立MyProject的,必須先建立豆莢,MyProject的? (有沒有在MyProject的主要目標 「目標相關性」 一節)

這裏是 「MyProject的」 構建階段選項卡(其真名是 「clicktube」):

enter image description here

  1. 」Pods_MyProject.framework「如何包含所有Pod,而其」Link Binary with Libraries「部分幾乎爲空?

豆莢,MyProject的 「鏈接與庫」 部分:

enter image description here

回答

0

這是一個有趣的事:

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

Xcode的檢查在build文件目錄來發現隱含的 依賴關係。例如,如果包含在工作空間 中的一個項目構建一個由同一工作空間中的另一個項目鏈接的庫,則Xcode會在構建其他項目之前自動構建庫,即使構建配置不會使該依賴關係成爲 依賴項明確。如有必要,您可以用 顯式構建設置覆蓋此類隱式依賴關係。對於明確的依賴關係,您必須創建項目引用 。

有兩種類型的依賴關係:顯式和隱式。您可以在「目標依賴關係」中指定顯式的。 XCode通過查看「帶庫的鏈接二進制文件」來發現隱式依賴關係,然後決定項目的構建順序。

「Pods_MyProject.framework」如何包含所有Pod,而其 「Link Binary with Libraries」部分幾乎爲空?

如果您看一下Pods.xcodeproj,那麼您通過podfile「安裝」的每個框架都有一個目標。然後是Pods_MyProject.framework目標,它對所有這些框架都有明確的依賴關係。