創(chuàng)建target有兩種方式,
1是通過新建target可以通過File-->New-->Target,然后選擇其中一個模板來創(chuàng)建,app類型的target,可以選擇Empty Application模板,不過新建的target有自己的AppDelegate和main,這點還沒研究好,如何與原來的AppDelegate和main復(fù)用
2.另一種方法是通過對原有的target做duplicate,復(fù)制一份,目前只研究了如何通過duplicate來新建target,做下記錄。
假設(shè)原來的target名字為A,我們需要新建一個target B
- 在原來的target上右鍵,選擇duplicate,Xcode會復(fù)制一個名為A copy的target對象,同時生成一個A copy-info.plist和A copy的scheme
- 改名
a)對A copy target改名,可以直接單擊target來修改,改成B
b)A copy-info.plist,默認生成在程序環(huán)境根目錄,也就是A.xcodeproj的同級目錄中,如果想放到里層(比如與A-info.plist放在同級目錄),可以先在Xcode刪除A copy-info.plist索引,然后拷貝文件到制定目錄中,然后更名為B-info.plist,在add到project中。在Project的Build Settings中,修改Info.plist File選項為B-info.plist的目錄(相對路徑),這樣就可以看到Info頁了(就是B-info.plist),接著修改ProductName和Bundle identifier,使之成為另一個app。Prefix Header的路徑,視具體需求而定是否要修改,如果兩個target可以公用同一個Prefix Header,那么就不需要修改這里的路徑
c)修改scheme,在調(diào)試的Stop按鈕邊上,我們可以選擇本工程中所有的target來做編譯,如果不修改,在這里選擇出來的名字就是A copy,為了與新建的target統(tǒng)一起來,同樣也要修改這里的名字。點擊scheme選擇區(qū),然后選Manager Scheme,找到A copy,然后改成你需要的名字,比如B
用duplicate的好處是,如果兩個target的相同點很多,用duplicate,就可以把相關(guān)的設(shè)置全部拷貝過來,而不需要做過多的修改
生成一個新的target,一定會與原target有區(qū)別,這里可以定義預(yù)編譯宏,來區(qū)分兩個版本的不同代碼,預(yù)編譯宏可以在Build Settings中Preprocessor Macros定義,比如在我們新建的target B中定義預(yù)編譯宏MACRO,然后在代碼中通過
if defined (MACRO)
//target B需要執(zhí)行的代碼
else
//target A需要執(zhí)行的代碼
endif
來區(qū)分
其他:Build Phases(各target編譯所包含的內(nèi)容,需要注意的是,如果創(chuàng)建了target B后,再往A里面添加資源或文件,target B中不會自動增加這些資源,需要手動添加)
1.Compile Sources
需要編譯的代碼文件
2.Link Binary With Libraries
編譯所依賴的庫
3.Copy Bundle Resources
編譯需要的資源
每個target可以根據(jù)具體需要增減里面的內(nèi)容
摘自:http://blog.csdn.net/yongyinmg/article/details/40985341
推薦查看(絕對夠詳細):http://www.lxweimin.com/p/e304247ede59