今天打開工程看到project 和 targets,感覺有點迷惑树瞭,就查了一下
Apple的人是這樣說的:“ Targets that define the products to build. A target organizes the files and instructions needed to build a product into a sequence of build actions that can be taken.”
簡單的理解诬乞,就是一個target 對應一個新的 product(基于同一份代碼的情況下)赡盘,雖然代碼是同一份讲仰,, 但編譯設置(比如編譯條件), 以及包含的資源文件卻可以有很大的差別.
project就是一個項目檐什,或者說工程牵祟,一個project可以對應多個target(你看看上面的圖)其中一個target可以生成一個對應的product
通過Copy Bundle Resources中內容的不同設置, 我們可以讓不同的product包含不同的資源, 包括程序的主圖標等,
每個target可以使用一個獨立, 不同的Info.plist文件
創(chuàng)建target有多種方法, 我們可以從現有的target上復制出一份, 然后略加改動, 也可以完全新建一個target出來. 但其實說穿了, 兩個方法大同小異
復制的方法創(chuàng)建target
我們在XCode左側的列表中, 展開 Targets 項, 在現有的target上, 右鍵選擇 "Duplicate", 或者選中現有target后, 在頂部菜單的Edit內選擇"Duplicate"也可以.
targets之間完全沒有關系深夯。但target和project有關系,target的setting會從project settings中繼承一部分
此時我們就得到了一個新的target, 而在Resource里面也會得到一個 xxxx copy.plist. 這個新的target與原有的target是完全一致的, 余下的就是一些差異化的修改, 這個我們后面再說
創(chuàng)建全新的target
類似復制的方法, 我們可以在左側的列表中很多地方按下右鍵菜單, 都可以看到Add中會有"New Target..."一項, 而在工程頂部菜單的Project內, 也可以看到這個"New Target..."的身影.
1.project就是一個項目诺苹,或者說工程咕晋,一個project可以對應多個target(你看看上面的圖)其中一個target可以生成一個對應的product
2.targets之間完全沒有關系。但target和project有關系收奔,target的setting會從project settings中繼承一部分
3掌呜、Target指定的內容:
3.1. Build Phases
Target Dependencies Target依賴,某些Target可能依賴某個Target輸出的值,這里設置依賴
Copy Bundle Resources 是指生成的product的.app內將包含哪些資源文件
Compile Sources 是指將有哪些源代碼被編譯
Link Binary With Libraries 是指編譯過程中會引用哪些庫文件
3.2. Info
這個Info.plist文件內定義了一個iPhone項目的很多關鍵性內容, 比如程序名稱, 最終生成product的全局唯一id等等.每一個Target都有一個info.plist文件來設置本target的一些屬性
Xcode中,產品與Target直接相關坪哄,而Target與Project直接相關质蕉。
產品屬性包括Project和Target兩塊內容。一個工程只有一個Project翩肌,但可以有一個或多個Target
總結:一個project 可以有很多targets模暗,targets的編譯設置可以不同,從而編譯出不同的版本
參考
1:XCode工程中 Project 和 Targets區(qū)別