2012-04-23 63 views
1

爲了爲我的程序構建安裝程序,我添加了一個'installer'Xcode project/target,它將所有必需的二進制文件複製到臨時位置,然後運行必要的邏輯來構建軟件包。構建XCode計劃構建目標的排序

我遇到的問題是我想直接映射此安裝程序項目,這取決於其他幾個項目,以便每次嘗試構建安裝程序項目時都會構建它們(如果需要)。

我加入到安裝程序的構建目標列表中的所有目標(在架構),他們被命令是這樣的:

Project A 
Project B 
Project C 
Installer (self) 

然而,當我做一個乾淨的構建我看的見的生成順序(編譯日誌)如下:

Project C 
Installer 
Project A 
Project B 

我需要強制某個構建順序,否則文件將無法供安裝程序使用。 XCode允許您在UI中更改這些項目的順序,但順序似乎沒有任何作用。有沒有辦法強制依賴的構建順序?

回答

3

爲安裝程序目標創建目標A,B和C目標依賴關係,這將確保A,B和C在安裝程序之前生成。從項目導航器中選擇您的項目文件以打開項目編輯器。從目標列表中選擇安裝程序目標。點擊編輯器頂部的Build Phases按鈕來顯示目標的構建階段。單擊Target Dependencies構建階段旁邊的顯示三角形。點擊+按鈕添加依賴關係。

當您添加目標依賴項時,目標A,B和C將在安裝程序之前構建。如果您需要按特定順序構建A,B和C,則必須添加更多的目標依賴項。

+0

我認爲這將是正確的方式,但無法使Target Dependencies正常工作。當我點擊'+'按鈕時,我看到消息'沒有項目可用',並且如果我嘗試點擊並從其中一個項目中拖動一個.app產品進入該空間,則不會發生任何事情。這可能是因爲我創建了我的'安裝程序'作爲一個空的項目,但由於它本身沒有代碼(只是做腳本),我不想從一個可執行的示例項目開始。如果您可以告訴我如何將項目添加到「無項目可用」列表,我將不勝感激! – Locksleyu 2012-04-23 19:56:26

+0

目標依賴關係不跨項目。您必須將A,B和C的目標添加到安裝程序的項目中才能使用目標依賴項。在你的情況下,擁有4個目標的項目比4個單獨的項目要好。 – 2012-04-23 20:06:15

0

XCode允許您更改UI中這些項目的順序,但 的順序似乎沒有任何作用。

在我的情況下,這種情況發生在「構建」選項卡中勾選「並行化構建」時。

禁用該複選框後,Xcode始終遵循我爲目標選擇的順序。

如果你考慮一下它是有道理的:當「Parallelize Build」被啓用時,它們之間沒有依賴約束的所有目標將被並行構建,這可能導致它們的亂序完成。

在另一方面,如果你希望自己的連續順序應當嚴格遵守,以及..這也正是平行建築相反,因此你應該禁用該選項。