Project、Target和Scheme

一个Xcode项目中, Project, Target, Scheme,Build Configuration怎么去理解和使用呢?


Project

Project是指项目或者称作工程。项目中包含了所有代码,资源,和项目配置。项目配置,在选中project后,可以看到右边会显示出来。这是项目级别的配置。如下图。

Target

Target是指编译目标。一个编译目标相当于一个具体的产品。如一个项目可以同时编译成一个或者几个不同的App,或者framework, bundle等。一个Target可以指定项目中的不同的代码文件和资源文件(图片,xib,storyboard等, plist等)。


Target也有自己的Build Settings, 这个BuildSettings的优先级要高于上面的Project的Build Settings

Scheme

Scheme是编译方案。一个编译方案中,包含了构建Build,Run,Test, Profile, Analyze, Archive这些活动中的具体设置。比如在Run中,我们可以设置要编译的可执行目标(某个Target)和编译配置(Configuration)。选中一个scheme,然后点击Edit Scheme菜单.

左边是某个活动,右边是某个活动的具体设置。在Run中,我们可以指定Build Configuration和Executable。Executable相当于一个可执行的Target。Build Configuration下节具体来讲。

Build Configuration

Build Configuration是构建配置。构建配置是Project中创建的。创建后,Project和Target可以针对这个Build Configuration来进行不同的构建设置。配置(Build Configuarition)是在这里创建的。

项目中针对不同构建配置的使用,如下:

Target中,对于不同构建配置的使用,如下:

同样道理,Target中的配置会覆盖Project中的配置。

总结

总体来说:Project是项目,它的配置相当于项目级配置;Target是一个具体的产品,打包后给出的是一个什么样的东西;Scheme是各种不同构建活动的方案,方案中包含要构建的目标(Target),以及使用的构建配置(Build Configuration)。

我们平时的运行Run,使用的就是一个编译方案中的Run活动的配置。而我们的打包使用的一个编译方案中的Archive配置。

如果比喻成我们平时的代码来理解的话:Target可以理解为一个对象(产品);Scheme理解为函数,实现了使用什么样的配置(build configuarion)和生成什么样的产品(Target),参数为xx操作;而我们的command+B,command+R,或者Archive等操作(参数)相当于调用了某个函数(Scheme)来执行,并生成了某个产品。

实际使用中,我们可以通过建立多个不同的Scheme,并且和创建多个Build Configuation来组合,代替一些多Target的情况。

你可能感兴趣的:(Project、Target和Scheme)