Xcode에서 Project는 하나 이상의 소프트웨어 제품을 빌드하는데 필요한 모든 파일(swift), resources 및 정보를 저장하는 저장소 입니다.
Project는 빌드하는 방법을 명시하는 end Product인 Target을 하나 이상 포함해야 합니다.
Project는 모든 Target에 대한 기본 빌드 설정을 정의 합니다.
Project는 모든 target의 부모역할을 하기 떄문에 target에 대한 기본빌드를 설정할수 있다.
각 Target 마다 따로 재정의(override) 하여 가질 수 있습니다.

xcode에서 project에도 buildSetting이 있고 target에서도 buildSetting이 있다. 각 target은 project의 buildSetting을 상속받아 override해서 재정의를 해서 구성하게 된다.

name: 프로젝트 이름
organizationName: organization의 이름
options: Tuist가 xcodeproj 파일을 만들 때의 옵션을 설정해줄 수 있다.
packages: SPM의 package를 의미한다.
settings: 프로젝트 파일에 있는 build settings의 정보들을 설정해준다.
Dictionary로 값을 줄 수 있다.
targets: 프로젝트의 타겟을 의미한다.
schemes: 프로젝트의 scheme를 의미한다.
fileHeaderTemplate: 내장 Xcode 템플릿에 Custom으로 파일 헤더를 만들 수 있다.

이런 화면들 많이 보셨을 것이다 project생성 중에 test를 포함하셨다면 저런 target들이 생성이 될것이다. 그래서 이런 target들은 어떤 역할을 하는지 project와 무슨차이가 있는지에 대해 알아 보겠습니다.

Xcode에서 project를 빌드할 때 하나이상의 target을 설정해서 빌드를 할 수 가 있다. 이 때 설정하는 target은 product단위 이다.
target에 따라서 프로젝트를 분리할수 있다. release와 debug처럼 다른 환경에서 빌드해야할때 target을 다르게 설정해 줄 수 있다.
Target은 한 번에 하나의 활성 Target만 있을 수 있고, Xcode의 Scheme은 활성 Target을 지정 할 수 있다.
Target은 빌드할 제품을 지정하며, Project 또는 Workspace의 파일 셋에서 제품을 빌드하기 위한 지시사항을 포함한다.!

name: 타겟의 이름
platform: iOS, macOS, tvOS, watchOS 같은 플랫폼을 의미한다.
product: app, appClips, staticFramework, framework, unitTest 등을 의미한다.
productName: 만들어진 product의 이름
The build product name bundled: 프로젝트 파일을 열었을 때 보이는Bundle Identifier
deploymentTarget: 배포 타겟을 설정할 수 있다.
infoPlist: info.plist를 정의한다.
sources: 소스코드의 경로를 입력해주면 된다. 안에 문자열로 경로를 입력해도 된다.
resources: Tuist가 Resources/ 의 리소스들을 자동으로 코드화화면, 그때 이 리소스들이 어디에 있는지에 대한 경로를 의미한다. 안에 문자열로 경로를 입력해도 된다.
copyFiles: 타겟에 대한 Build Phase 파일 복사 작업
headers: 타겟에 대한 headers
entitlements: 타겟에 대한 entitlements의 경로를 입력해주면 된다.
scripts: 타겟에 대한 build Phase 스크립트 작업
dependencies: 타겟의 의존성에 대한 것을 의미한다. 라이브러리나 다른 모듈을 의존성으로 넣을 때 사용한다.
settings: 타겟의 세팅을 정의한다.
coreDataModels: CoreData의 모델들의 경로랑 버전을 정의한다.
environment: scheme에서 Edit Scheme… 버튼을 누르면 나오는 창에서 Environment Variables를 설정할 수 있는데 이때 environment를 설정하면 자동으로 생성한다.

하이라이트 된곳을 보면 Xcode Scheme는 Build 할 설정들의 집합이다.
원하는 만큼 Scheme를 정의 할 수 있지만 한 번에 하나씩 만 활성화 할 수 있다.
Scheme을 프로젝트에 저장할지에 대한 여부를 지정할 수 있으며, 이 경우 프로젝트가 포함 된 모든 Workspace 또는 특정 Workspace 에서 사용할 수 있다.