Target、Project、Workspace的联系和区别

Target

    Target说明了product/binary是如何构建的,包括一系列build settings(如Linking、Packaging等),

build settings

并且Target定义了文件(源码和资源)到底属于哪个项目,添加文件时,需要选择对应的Target(注意:当有多个Target,添加文件时,默认只会选择一个Target,如果该文件需要被多个Target共享,需要手动勾选)。多个Targe可以用来区分不同的项目环境,如采用预定义宏在dev、release、test环境下配置不同的参数

 

choose target

Project

    Project可以看作是一系列相关的Target的集合,包含了所有Target的文件,每个Target的文件都是Project文件的子集。Project也可以设定build settings作为所有Target的默认settings,如果某个Target需要修改,可以在自己的settings里修改

 

Project-Build Settings

    XCode可以打开.xcodeproj和.xcworkspace后缀的文件,但不能直接打开Target。但是Project不能直接build/run,所以每个Project至少需要一个Target

 

需要选择一个Target build/run

    Project可以内嵌subproject作为依赖,这样你就可以在同一个window里面编辑项目和它需要的依赖,并且在build/run的时候,subproject的Target也会出现在选择列表里,当dependency发生变化时,Xcode会重新编译(注:这一条我还没遇到实际的使用情况,所以具体的大家可以去搜网上其他的教程)

Workspace

    当dependency需要被多个Project用到(准确的说是它们的target使用)时,把dependency放在和Project同级的目录就显得比较合适,这时候,Workspace就出现了。Workspace包含了多个同级的Project(Project本身可以有subproject),这些Project可以有依赖关系。同样,Workspace中Project的Target都会出现在build/run的选择列表里

 

Workspace

    Workspace中的Project依然可以单独打开,但是如果当A Project依赖于B Project,A Project单独打开时,Xcode不能识别依赖,会导致编译错误。同样,当dependency发生变化时,Xcode会重新编译。

总结

1. Project包含需要的文件、配置和对应Target;Workspace包含一些相互依赖的Project

2. Project和Workspace都是项目的组织形式,只是level不一样

3. 一般来说,使用Project就够了,但是使用CocoaPods时,会自动使用使用Workspace来组织项目(生成一个名为Pods的项目包含第三方库)



 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值