Project是构建一个或多个软件产品所需的所有文件,资源和信息的存储库。
Target指定要构建的产品,并包含构建需要被包含在Project或Workspace中的一组文件说明。
一个Project 可以包含一个或者多个Target。
Target可以相互独立,也可以依赖于另一个Target。
在Project editor还可以看到一些产品信息和构建信息。分为Project 和 Target 级别,这两个级别都有Build Settings,在构建产品时会用到构建配置信息,如适配的最低版本号,构建的目标CPU架构等。在构建产品时,会使用Project级别的Build Configuration(如适配的最低版本号),如果Target中没有修改过的话,否则使用Target级别中的Build Configuration。
Build Settings 中的部分Build Configuration分为Debug和Release两部分。
Build Active Architecture Only
表示只构建适用于当前CPU架构的产品,Debug版本值为YES,只构建当前CPU架构的产品,Release版本值为NO,不仅仅只构建当前CPU架构的产品。所以调试构建的速度要比发布构建更快。
Scheme 定义了一组可以构建的Target,构建时所使用的构建信息,可执行的一组测试。Scheme是可以编辑的。
Workspace是一个Xcode文档,可以包含多个 Project,以及要包括的任何其他文件。
被包含在WorkSpace中的Project中的Target还可能存在隐式或者显式的依赖关系。
显示依赖:在Xcode中显示添加Target依赖关系.
隐式依赖:Xcode会自动遍历WorkSpace中所有的文件检查隐式依赖关系,如果Target A 引用 Target B 的编译的库,那么Target A 隐式依赖于Target B。如使用cocoaPods管理第三方,我们自己建的Target 引用cocoaPods创建的另一个项目Pods编译的库。
默认情况下,Workspace中的所有Xcode Project共享一个编译目录,其中所有Project中的文件都是可以相互引用的,如果多个Project引用同一个库,只需要导入一次即可,而不需要每个Project都导入一次。
WorkSpace的每个Project依然还是独立的个体。如果要打开一个既不影响其他项目,也不被WorkSapce中的其他项目影响的Project,可以选择直接打开.xcodeproj而不打开。