Xcode中的Target,主要包含下面几点知识:

Target依赖

Build Phase

Build Rule

Target依赖

Target的依赖关系表示一个Target要构建成功,必先依赖于其他Target的构建成功。

一个Target可以依赖同一个工程里面的另一个Target,也可以依赖不同工程里面的Target。依赖不同工程里面的Target,叫做跨工程依赖(cross-project dependency)。

想要实现跨工程依赖,最简单的方法是先将被依赖的工程文件(.xcodeproj文件)拖到当前工程中,然后配置被依赖的Target。

Build Phase

Build Phase定义了一个Target需要构建成功,需要经历的步骤。

一个Target构建的时候,从上到下执行Build Phase。因此Build Phase的顺序时很重要的,比如,你不能没有编译就链接。但是,Xcode也允许我们改变Build Phase的顺序,只要将你想调整的Build Phase拖到想要的位置即可。

对于Build Phase,着重介绍一下Run Script。在Run Script中,Input Files并不是传递给脚本的参数,Output Files也不是告诉Xcode在哪里产生输出文件,Input Files和Output Files的作用,仅仅是告诉Xcode,当Input Files修改日期比Output Files新时,就需要运行脚本。如果Input Files和Output Files有一个不指定,那么脚本每次都会执行。因此,指定输入文件和输出文件,Xcode并不会自动读入文件,并输出文件到指定位置,这些都需要你在脚本里面完成。同时,在脚本里面,可以访问build settings当中的变量。

Build Rule

Build Rule定义了对于某一个类型的文件,需要进行的特殊处理。比如,你可能需要对于.c文件用自己定义个编译器编译,那么,就可以通过Build Rule来达到;如果一中文件类型需要转换成另一种文件类型,也可以使用Build Rule。

Build Rule分位系统定义的Build Rule和自定义的Build Rule,自定义的Build Rule优先级总是大于系统定义的Build Rule。Xcode在匹配Build Rule时,总是根据Build Rule定义的顺序,匹配第一个符合定义的Build Rule,这就是说,如果有两个完全相同的Build Rule,那么在前的Build Rule将被匹配。

一个Build Rule被同一个Target的所有Build Phase所共享,无法为同一个Target的不同Build Pahse定义不同的Build Rule。

在执行Build Rule的脚本的时候:

1 当前目录被设置为project folder(即包含工程文件.xcodeproj的文件夹)

2 许多与输入文件和输出文件有关的环境变量被设置,可以再脚本中使用,相关环境变量(只是一部分)如下表:

对于Build Rule中的输出文件,如果你的目的是将输出文件写到Target的build产物中,那么输出文件应该指定为TARGET_BUILD_DIR,如果你的输出文件只是作为中间文件,那么输出文件应该指定为 DERIVED_FILES_DIR。指定输出文件的目的,是为了告诉Xcode到哪里寻找这些输出文件,以便后续利用。举个例子,如果一个Build Rule将XML编译成LEX文件,而后续的Build Rule会降LEX文件编译成.c文件,那么,Xcode就会根据第一个Build Rule指定的LEX输出文件位置,作为第二个Build Rule的输入。

Xcode中的Target的更多相关文章

  1. 转一篇Xcode中利用target编译不同版本的文章

    http://www.cocoachina.com/ios/20160331/15832.html 主要说的是,不用自己定义debug宏,而是在xcode的编译配置文件中,设定debug宏,这样,不用 ...

  2. iOS开发时,在Xcode中添加多个Targets进行版本控制

    在iOS开发中,很可能有以下场景:需要开发多个版本,或因需区分收费版,免费版,或因为网络环境需要区分测试版,发布版,或因渠道不同需要区分企业版,AppStore版等等.解决办法无非就是CheckOut ...

  3. XCode中Architecturs配置及常见问题

    http://lanvige.github.io/2014/03/19/architecturs-in-xcode/ XCode 5.1升级后因arm64和CocoaPods的原因,痛了一天,终于解决 ...

  4. iOS 在 Xcode 中重命名项目名称

    本教程使用的 Xcode 版本是Xcode 6.3.1,网上有好多的教程,都是在 Xcode 4 上做的讲解,现以本文章讲解一下如何在 Xcode 6.3.1 中重命名你的项目名称,包括你的应用名称. ...

  5. 如何找出Xcode中不同版本Swift的路径

    我们知道Xcode中可能包含不知一个Swift的版本,那么我们如何找到它们对应的路径呢? 熟悉unix shell命令的童鞋都知道有一个find指令,在我们已知Xcode路径时,我们可以在其中找到Sw ...

  6. OC Xcode中常见的错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  7. Xcode中的文件类型

    文件类型 Xcode中的文件类型,总共4种类型: 1 普通文件(File) 2 Group(在Xcode中就是黄色的文件夹) 3 Folder(在Xcode中就是蓝色的文件夹) 4 Framework ...

  8. xcode中的预定义宏

    [xcode中的预定义宏] 1.SRCROOT,是定义本target的proj的路径. 2.OBJROOT,对象文件根路径,对象文件(即obj文件)就是中间的临时文件.中间文件输出目录的名字以“pro ...

  9. 在XCode中使用XCTest

    测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...

随机推荐

  1. Kafka设计解析(七)Kafka Stream

    转载自 技术世界,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka ...

  2. C语言程序设计I—第六周教学

    第六周教学总结(8/10-14/10) 教学内容 第二章 用C语言编写程序 2.4 输出华氏-摄氏温度转换表 课前准备 在蓝墨云班课发布资源: PTA:2018秋第六周作业 分享码:88C28D89E ...

  3. (转)MySQL高可用方案MHA的部署和原理

    背后深层次的逻辑: MHA Node则运行在每个mysql节点上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它自动将最新数据的slave提升为master,然 ...

  4. canvas 绘制刮刮卡

    思路=> 用div来展示刮奖结果,用canvas绘制刮奖前展示的图片或者文字:将canvas叠在div上方,刮奖是只需要操作canvas配合touch事件即可简单完成. canvas刮奖可以用g ...

  5. #leetcode刷题之路38-报数

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" (&quo ...

  6. Mac编译安装swfTools

    Mac编译安装swfTools Mac编译安装swfTools 下载源码 解压源码 安装依赖项 ./configure执行配置或者执行如下配置命令: 需要注意这里存在部分代码错误,需要修改解决后执行 ...

  7. python3通过纯真IP数据库查询IP归属地信息

    在网上看到的别人写的python2的代码,修改成了python3. 把纯真IP数据库文件qqwry.dat放到czip.py同一目录下. #! /usr/bin/env python # -*- co ...

  8. 时间序列分析工具箱—— h2o + timetk

    目录 时间序列分析工具箱-- h2o + timetk h2o 的用途 加载包 安装 h2o 加载包 数据 教程:h2o + timetk,时间序列机器学习 时间序列机器学习 最终的胜利者是... 翻 ...

  9. 【LG3722】[HNOI2017]影魔

    [LG3722][HNOI2017]影魔 题面 洛谷 题解 先使用单调栈求出\(i\)左边第一个比\(i\)大的位置\(lp_i\),和右边第一个比\(i\)大的位置\(rp_i\). 考虑\(i\) ...

  10. 2734: [HNOI2012]集合选数

    2734: [HNOI2012]集合选数 链接 分析: 转化一下题意. 1 3 9 27... 2 6 18 54... 4 12 36 108... 8 24 72 216... ... 写成这样的 ...