Xcode Workspace
1.1、什么是Workspace

Workspace可以翻译成工作空间。

一般的,对于一个简单的应用,单独新建一个Project就可以了,然后把所有的程序文件都放在里面。 但是,有时候,项目会比较复杂,我们的Project有可能要使用其他的Project文件, 或者引入其他的静态库文件,这个时候Workspace就派上用场了。

Workspace可以单独管理多个Project,又可以通过配置,让各个Project相互依赖。

如果不用Workspace,如果用到其他Project的文件, 做法就是要手动copy文件到当前的Project,这是非常麻烦的事情。 使用Workspace管理这些Project只需要简单的配置即可。

1.2、创建Workspace

通过菜单File -> New -> Workspace...打开如下界面:

点击Save按钮就创建好了一个Workspace

查看生成的文件结构:

实际上,刚才的动作,就是生成了一个*.xcworkspace的文件夹,这里面存放的就是一些配置信息。

1.3、在Workspace中创建Project

一个Workspace中可以新建很多的Project

Workspace中新建一个Project的本质是分为两步骤:

1、在Workspace所在的目录中新建一个独立的Project

2、在Workspace的配置文件中写入一些配置, 从而将刚刚新建的Project当前Workspace产生关系。

Workspace中,点击左下角的"+"按钮,如下:

在出现的菜单中选择New Project...,如下:

其他步骤省略,我们看下面这一步:

假设,我们在一个Workspace中创建了两个Project,我们的文件目录结构如下:

.
├── Project1
│   ├── Project1
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets
│   │   │   └── AppIcon.appiconset
│   │   │       └── Contents.json
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── ViewController.h
│   │   ├── ViewController.m
│   │   └── main.m
│   ├── Project1.xcodeproj
│   │   ├── project.pbxproj
│   │   └── xcuserdata
│   │       └── leleliu008.xcuserdatad
│   │           └── xcschemes
│   │               ├── Project1.xcscheme
│   │               └── xcschememanagement.plist
│   ├── Project1Tests
│   │   ├── Info.plist
│   │   └── Project1Tests.m
│   └── Project1UITests
│       ├── Info.plist
│       └── Project1UITests.m
├── Project2
│   ├── Project2
│   │   ├── AppDelegate.h
│   │   ├── AppDelegate.m
│   │   ├── Assets.xcassets
│   │   │   └── AppIcon.appiconset
│   │   │       └── Contents.json
│   │   ├── Base.lproj
│   │   │   ├── LaunchScreen.storyboard
│   │   │   └── Main.storyboard
│   │   ├── Info.plist
│   │   ├── ViewController.h
│   │   ├── ViewController.m
│   │   └── main.m
│   ├── Project2.xcodeproj
│   │   ├── project.pbxproj
│   │   └── xcuserdata
│   │       └── leleliu008.xcuserdatad
│   │           └── xcschemes
│   │               ├── Project2.xcscheme
│   │               └── xcschememanagement.plist
│   ├── Project2Tests
│   │   ├── Info.plist
│   │   └── Project2Tests.m
│   └── Project2UITests
│       ├── Info.plist
│       └── Project2UITests.m
└── haha.xcworkspace
    ├── contents.xcworkspacedata
    └── xcuserdata
        └── leleliu008.xcuserdatad
            └── UserInterfaceState.xcuserstate

理论上,一个WorkspaceProject可以存放在任何地方, 但是,便于管理,我们最好与Workspace的配置文件放在同一个文件夹下面。

1.4、将已经存在的Project导入Workspace中

我们经常需要使用一些第三方的开源的Project或者某些公司的SDK, 这时候,我们就需要把这些Project导入到我们的Workspace中。

导入的本质就是在Workspace的配置文件中写入一些配置, 从而将要导入的Project与本Workspace产生关系。

实际上,第三方Project管理工具CocoaPods就是干这个事情的。

Workspace的左侧右击选择"Add Files to "xx"...",如下:

只选择xx.xcodeproj加入即可。

1.5、设置Workspace的编译文件输出路径

通过菜单Xcode -> Preferences...打开首选项,选中Location标签页, 设置Derived DataRelative,点击Advanced按钮进入高级设置, 选中Custom,选中Relative to Workspace。 这样,在WorkspaceBuild/Products文件夹下可以找到编译生成的目标文件了。