
Project는 하나 이상의 소프트웨어 제품을 빌드하는데 필요한 모든 파일(swift), resources 및 정보를 저장하는 저장소 입니다.Project에는 하나의 이상의 Target을 포함하고 있습니다.Project는 모든 Target에 대한 기본 빌드 설정을 정의 합니다.Target 마다 따로 재정의(override) 하여 가질 수 있습니다.release, debugTargetproject에 의해 빌드된 하나의 Product에 대한 참조Pruduct를 빌드하는데 필요한 Sources들에 대한 참조Target과의 의존성 관계를 포함하는 Target 수준의 빌드 설정Target은 빌드할 제품을 지정하며, Project 또는 Workspace의 파일 셋에서 제품을 빌드하기 위한 지시사항을 포함한다.Sources) 파일과 Sources파일을 처리하기 위한 명령어 등을 구성한다.Target은 프로젝트 빌드를 설정(Build Settings)을 상속(Inheritance) 받지만, Target 수준에서 다른 설정을 지정하여 프로젝트 설정을 무시 가능하다.Target은 한 번에 하나의 활성 Target만 있을 수 있고, Xcode의 Scheme은 활성 Target을 지정 할 수 있다.빌드를 하기 위해서는
Target이 다른Target을 Ouput으로 요구를 하면, "첫 번째Target은 두 번째Target에 의존한다 라고 말한다. 두Target이 같은Workspcae에 있으면 Xcode가 종속성을 발견 할 수 있으며, 종속성이 필요한 순서로 제품을 빌드한다. 이러한 관계를 "암시적 종속성" 이라고 한다.
Target들의 집합이다.Build Settings, Build configuration, 실행할 테스트 들의 모음을 정희 할 수 있다.Scheme를 정의 할 수 있지만 한 번에 하나씩 만 활성화 할 수 있다.Scheme을 프로젝트에 저장할지에 대한 여부를 지정할 수 있으며, 이 경우 프로젝트가 포함 된 모든 Workspace 또는 특정 Workspace 에서 사용할 수 있다. Scheme 을 선택하면, 실행 대상 (즉, 제품이 빌드되는 하드웨어의 아키텍처)도 선택된다.Build Setting은 Product 빌드 프로세스의 특정 측면을 수행하는 방법에 대한 정보가 들어있는 변수이다.Project 또는 Target Level에서 Build Settings를 지정할 수 있으며 각 Proejct-Level 빌드 설정은 특정 Target 에 대한 빌드 설정에 의해서 명시적으로 무시되지 않는 한 프로젝트의 모든 Target 에 적용된다.