Project는 모든 파일(sources),Resource를 빌드하는데 필요한 정보의 저장소를 의미합니다.Project는 빌드하는 방법을 명시하는 end Product인 Target을 하나 이상 포함해야 합니다. Project 멤버와이즈 이니셜라이저에서 organizationName을 초기화로 지정할 수 있습니다.
Project가 가지고 있는 정보는
- Sources 파일에 대한 참조
- structure navigator에서 소스파일을 그룹화
- Debug, Release와 같은 build configuration을 설정 가능
Target이란 하나의 Product와 워크스페이스(또는 파일 들)에서 Product를 빌드하기 위한 지침(instruction)들을 포함한다고 합니다.Project 에서는 여러개의 Target을 가질 수 있습니다.Target은 하나의 Product를 만들어 냅니다.아래와 같이 하나의 Target과 하나의 Project가 있는 것을 확인할 수 있습니다.


Project는 Struct 타입으로 지원되고 있으며 다양한 instance property를 통해 프로젝트를 세팅 할 수 있습니다.
name: 프로젝트 이름 설정 instance PropertyorganizationName : organization 이름 설정 instance Propertyoptions : Tuist가 .xcodproj 파일을 만들때의 옵션을 설정 해 줄 수 있습니다. 대표적으로 imageAssets에 대해서 자동으로 파일과 이름을 만들어 주는데 이기능을 disable 할 수 있습니다. 기본 값은 false 입니다.packages : 저희가 주로 많이 사용하는 Swift Package Manager Pacakge를 의미합니다.targets : Project 의 Target을 의미합니다.schemes : Project Schemes 정의하는 부분 입니다.settings : Project File 있는 build settings의 정보들을 설정해줍니다.fileHeaderTemplate : 내장 Xcode 템플릿에 Custom으로 파일 헤더를 만들 수 있습니다.additionalFiles : Tuist에서 프로젝트를 만들 때 Xcode에 자동으로 연결해주지 않는 파일을 넣으면 프로젝트에 연결시켜줍니다. 예를 들어 .md, .graphql 등을 만들때 Xcode에는 자동으로 보여지지 않는데, 여기에 추가해준다면 Xcode에서도 볼 수 있습니다.resourceSynthesizers : Tuist는 프로젝트를 생성할 때 Resources/ 안에 파일 확장자에 따라 enum을 제공해줍니다. 즉 Color,Font 등을 enum 타입으로 자동으로 생성해줍니다