iOS址之Xcode中的 workspace, project, target, scheme、同一个workspace中创建多个project模块化协同工作、工程中引用另外一个工程

 workspace, project, target, scheme详细解答:https://www.jianshu.com/p/5740f41881d9

 

Xcode Project

Xcode中的 project里面包含了所有的源文件,资源文件和构建一个或者多个product的信息。project利用他们去编译我们所需的product,也帮我们组织它们之间的关系。一个project可以包含一个或者多个target。project定义了一些基本的编译设置,每个target都继承了project的默认设置,每个target可以通过重新设置target的编译选项来定义自己的特殊编译选项。

project包含了以下信息:

  • 源文件

    • 代码的头文件和实现文件
    • 静态库,动态库,
    • 资源文件(如文本,xml,plist等)
    • 图片资源
    • 界面资源文件(xib, storyboard等)
  • 在文件结构的导航中,采用group去组织文件(实际开发中,尽量使用实体文件夹)

  • project的编译级别配置文件如(debug, release)

  • target

  • 运行环境如:debug,test

project可以单独存在,或者存在于一个workspace中。

一个XCode project包含了两种设置:Project Settings 和 Target Settings。
它们之间的主要区别在于:Project settings应用于project里面的所有target;而Target settings只对target本身有效,不影响project中的其他target。
• 如果一个选项在project settings中和target settings中都被设定了(会以粗体字表示),那么target settings会覆盖project settings。
•如果一个选项在target settings中没有被设定(不会以粗体表示),那么它会继承project settings中的设置。如果它在project settings中也没有被设定(不会以粗体表示),就会继承XCode的默认设置。
建议一般情况下,配置target settings。在包含多个target的project中,如果需要在target之间使用相同的设定,配置project settings。
一个workspace可以包含若干个工程;
一个工程可以引用另外一个工程;

target

target定义了构造一个product所需的文件和编译指令。一个target对应于一个product。target说白了就是
告诉编译系统要编译的文件和编译设置。编译指令就是根据build settings and build phases来确定的。

target之间可以进行依赖。如果一个target的编译需要另外一个target作为他的输入,那么我们就可以说前者依赖于后者。如果这两个target在同一个workspace里面,Xcode可以发现他们的依赖关系,这种依赖称之为隐式依赖。当然你可以通过设置,明确他们的依赖关系。

workspace

workspace是Xcode的一种文件,用来管理工程和里面的文件,一个workspace可以包含若干个工程,甚至可以添加任何你想添加的文件。workspace提供了工程和工程里面的target之间隐式和显式依赖
关系,用来管理和组织工程里面的所有文件。

workspace中的工程共享一个编译目录

workspace中的工程默认都是在同一个编译目录下,也就是workspace的编译目录。由于每个工程中的文件都在workspace的编译目录下,所以每个工程之间的文件都是相互可以引用的。因此,如果workspace中的多个工程使用了同一个库的时候,我们就不需要给每个工程都拷贝一个。

Xcode会检查编译目录里面的所有文件去发现隐式的依赖关系。比如,一个工程用来编译成库给其他工程去引用,Xcode可以自动的先编译这个工程的库,然后再去编译其他的工程。虽然你没有在编译选项里面去设置这些依赖关系。当然如果你真的需要的话,你也可以去设置,提供一个显式的编译依赖关系。

workspace中每个工程依然都是独立的。如果你想单独的使用这个工程,并且不希望影响其他工程,或者被其他工程影响,你可以直接打开工程而不通过workspace。一个工程可以被多个workspace所拥有,在任意的组合中依然可以直接运行,而不需要去重新配置工程或者workspace。

Xcode Scheme

scheme定义了编译集合中的若干target,编译时的一些设置以及要执行的测试集合。我们可以定义多个scheme,但是每次只能使用其中一个。我们可以设置scheme保存在project中还是workspace中。如果保存在project中,那么任意包含了这个工程的workspace都可以使用。如果保存在workspace中,那么只有这个workspace可以使用。

 

*********同一个workspace中创建多个project模块化协同工作

1.打开XCODE,菜单栏-》file-〉new-》workspace,创建workspace;

2.双击打开workspace,菜单栏-》file-〉new-》project,

 

一个工程下创建多个target:

 

 

********工程中引入另外一个工程:(简化就是吧一个项目打成静态库,然后再另外一个项目中使用静态库)

   工程A中引用工程B的流程:

  • 1.将B工程(整个工程文件,包含.xcodeproj)拷贝到A工程目录下.

  • 2.点击A工程的工程文件名,然后add files to “xx”, 将B工程的.xcodeprj文件添加进来(注意只需要添加.xcodeprj文件,其他文件不需要添加。)

  • 3.选择A工程target,点击build setting选项,右上角搜索Header Search找到Header Search Paths双击,在弹出框里点有下角的+号,添加导入工程的路径$(SRCROOT)/项目名称

  • 4.因为A工程要包含B工程的静态库,假如B工程生成的静态库为xxxx.a, 在A工程的General选项中,拉到link frameworks and libraries项,点击+号,将B工程下的xxxx.a静态库添加上。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值