XCode 同一Project建立多个target

因为项目需求,同一项目须要发两个版本,两个版本只有小部分不一样,特意研究了一下target,小有了解,把建立target的通过记录在案,方便事后查看,若有疏漏,请网友指正。xcode


建立target有两种方式,app

1是经过新建target能够经过File-->New-->Target,而后选择其中一个模板来建立,app类型的target,能够选择Empty Application模板,不过新建的target有本身的AppDelegate和main,这点还没研究好,如何与原来的AppDelegate和main复用ide

2.另外一种方法是经过对原有的target作duplicate,复制一份,目前只研究了如何经过duplicate来新建target,作下记录。ui

假设原来的target名字为A,咱们须要新建一个target Bspa


1. 在原来的target上右键,选择duplicate,Xcode会复制一个名为A copy的target对象,同时生成一个A copy-info.plist和A copy的scheme调试

2. 更名code

a)对A copy target更名,能够直接单击target来修改,改为Borm

b)A copy-info.plist,默认生成在程序环境根目录,也就是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,在调试的Stop按钮边上,咱们能够选择本工程中全部的target来作编译,若是不修改,在这里选择出来的名字就是A copy,为了与新建的target统一块儿来,一样也要修改这里的名字。点击scheme选择区,而后选Manager Scheme,找到A copy,而后改为你须要的名字,好比B索引


用duplicate的好处是,若是两个target的相同点不少,用duplicate,就能够把相关的设置所有拷贝过来,而不须要作过多的修改


生成一个新的target,必定会与原target有区别,这里能够定义预编译宏,来区分两个版本的不一样代码,预编译宏能够在Build Settings中Preprocessor Macros定义,好比在咱们新建的target B中定义预编译宏MACRO,而后在代码中经过

#if defined (MACRO)

//target  B须要执行的代码

#else

//target A须要执行的代码

#endif

来区分


其余:Build Phases(各target编译所包含的内容,须要注意的是,若是建立了target B后,再往A里面添加资源或文件,target B中不会自动增长这些资源,须要手动添加)

1.Compile Sources

须要编译的代码文件

2.Link Binary With Libraries

编译所依赖的库

3.Copy Bundle Resources

编译须要的资源

每一个target能够根据具体须要增减里面的内容

相关文章
相关标签/搜索