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

本文主要是介绍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静态库添加上。

 

这篇关于iOS址之Xcode中的 workspace, project, target, scheme、同一个workspace中创建多个project模块化协同工作、工程中引用另外一个工程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017696

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计