workspace、project、target、configuration是我们开发中常见的文件类型,本文将探究他们是如何互相配合对开发中的资源和代码进行管理的;
workspace
主要用来管理project,也可以管理文件和资源,但由于target无法直接引用所以意义不大,一般不通过workspace直接去管理文件和资源;
project
project 中一般管理以下内容:target、configuration、文件和资源;
文件和资源
常见的有 .m 、.a、.framework、bundle、 plist、assert等,project中管理的文件和资源并不会直接参与编译;
target
- 使用文件和资源进行编译的最小单位,
target可以从project管理的文件和资源中选取部分进行编译,具体在Build Phases中进行相关配置; - 不同的
target可以配置不同的资源和文件,从而达到生成不同编译产物的需求; - 使用多
target来管理项目时,向project中添加文件和资源时所有用到的target都需要勾选;
configuration
configuration可以理解为编译配置,每个project默认有Debug和Release两个配置,可以在project - info中添加新的configuration;- 所有
configuration最终都体现在target的Building Setting中,即所有可以在Building Setting可以修改的项目都可以通过configuration来进行配置; - cocoapods和大部分库依赖管理工具都是通过创建
configuration文件进行配置实现修改项目依赖的效果;
scheme
scheme是将target中的文件和资源按照配置的configuration进行编译中并产生编译产物(executable/static library/dynamic library)的基本单位;