본문 바로가기
iOS/설명

[iOS] Xcode Target, Scheme

by Sky Titan 2022. 10. 11.
728x90
 

[iOS] Xcode - Target, Project, Scheme, Build setting 에 대하여

Xcode에서 프로젝트를 생성하면 프로젝트 파일이 가장 상위에 있고, 그 안에는 Target이나 Project 등이 존재하는 것을 볼 수 있다. 오늘은 이 App project파일에 대해 공부해보고자 한다. **공식문서**를

zzoo789.tistory.com

 

 

Apple Developer Documentation

 

developer.apple.com

 

 

Xcode Target

Xcode Target A target specifies a product to build and contains the instructions for building the product from a set of files in a project or workspace. A target defines a single product; it organizes the inputs into the build system—the source files and

developer.apple.com

Target

Target이란 Xcode에서 build해서 만들어 내는 하나의 product를 의미하고 동시에 해당 product를 빌드할 때 필요한 instructions를 포함한다. (Target = product +)

 

하나의 Xcode Project는 여러 개의 target을 가질 수 있다.

  • target의 product는 Application, Unit test bundle, framework 등이 될 수 있다.
  • 여러 개의 target중 하나만 활성화 시킬 수 있는데 이것은 Xcode scheme에서 설정할 수 있다.

PushTest 프로젝트에 존재하는 여러 개의 target들
target의 product로 지정될 수 있는 것들

 

각 target은 project의 Build Settings를 상속 받지만, 원할 경우 각 target마다의 Build Settings를 재정의(Override)할 수 있다.

project의 Build Settings
target마다 재정의할 수 있는 Build Settings

implicit dependency(암시적 의존성)

  • 같은 workspace에 여러 target들이 있을 때, target A를 build하는데 target B의 결과물이 필요하다고 한다면 A는 B에 의존성을 가진다고 한다.
  • 이런 경우 Xcode가 알아서 의존성을 발견하고 빌드 순서를 조절하는데 이것을 implicit dependency라고 한다.

explicit dependency(명시적 의존성)

  • 위의 암시적 의존성의 예시의 경우엔, Xcode에서 B -> A 순으로 빌드를 하려고 할 것이다.
  • 하지만 만약 B의 결과를 A에서 사용하지 않는다면 명시적 의존성을 따로 지정해줄 수 있다.

 

Scheme

Xcode의 Scheme은 build할 target, build시 사용할 configuration, 실행할 test의 묶음을 모아놓은 것을 의미한다.

(Scheme = target + configuration + tests collection)

Product -> Scheme -> Manage Scheme

 

여러 개의 Scheme을 동시에 가질 수 있지만 한 번에 하나의 active scheme을 가질 수 있다.

(Build, Run, Test, Profile, Archive할 때 하나의 Scheme만을 선택할 수 있다.)

Xcode 상단에서 active scheme 지정

그리고 Scheme을 project에 포함시킬 건지, workspace에 포함시킬 건지도 결정할 수 있다.

  1. project에 포함
    • 해당 project를 포함하는 모든 workspace에서 사용가능
  2. workspace에 포함
    • 해당 workspace에서만 사용가능

포함시킬 container 지정가능
Build, Run, Test, Profile, Analyze, Archive 시에 필요한 Configuration을 담고 있다.

 

728x90

댓글