Skip to content
DKY edited this page May 10, 2022 · 6 revisions

Target

Xcode에서 Build를 실행하여 생성되는 최종 제품(end product)

최종 제품이란 앱, 프레임워크, Unit Test 등이다.

Target

Target에 보면 최종제품들이 앱으로 있는 것을 볼 수 있다.

Framework

프레임워크도 마찬가지로 확인할 수 있다.

Target은 또 하나의 특징이 있는데

프로젝트에는 하나 이상의 Target이 포함될 수 있으며, 각 Target은 하나의 제품을 생성한다.

Target

위의 이미지에서 하나의 프로젝트 안에 여러개의 타겟이 있는 것을 볼 수 있다.

1. 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."

(Target은 빌드 할 제품을 지정하며, Project 또는 workspace안에 있는 파일 set에서, product를 build하기 위한 instructions을 포함한다.)

product building instructions은 Xcode Project Editor에서 볼 수 있다.

Instruction

Target > Build Setting, Phases의 형태로 있다. 얘네들이 사실은 instructions이다.

Script

script역시 instructions에 포함된다.

Target은 Project build setting을 상속받는다.

BuildSetting

Target에도 Build Setting이 있지만 Project에도 Build Setting이 있다.

고로 Target은 기본적으로 Project Build Setting을 상속받는다.

하지만 Target level에서 다른 설정을 지정함으로써 Project Setting을 Override할 수 있다.

한번에 하나의 active Target만 있을 수 있으며, Xcode Scheme은 active target을 지정한다.

2. 의존성에 대하여

Target이 생성하는 제품이, 또 다른 Target과 관련될 수 있다.

Target(A)이 build하기 위해서 다른 Target(B)의 output을 필요로 하는 경우에,

A Target은 B Target에 의존한다고 한다.

Xcode는 이런 두 Target이 같은 workspace안에 있는 경우,

Xcode가 알아서 이러한 dependency(종속성)을 발견한다.

그리고 이러한 경우, Xcode는 알아서 필요한 순서대로 product를 build한다.

이러한 관계를 implicit dependency(암묵적인 종속성)라고 한다.

build Setting에서 명시적으로(explicit. 위에서 나온 implicit와 반대) Target 종속성들을 지정할 수 있으며,

Xcode가 implicit dependency을 가질것으로 예상 할 수 있는 두개의 Target이 실제로는 종속되지 않았음을 지정할 수도 있다.

예를 들어, 같은 workspace안에서 해당 라이브러리에 대해 링크되는 라이브러리와 앱을 둘 다 빌드 할 수 있는데

Xcode는 이 관계를 발견하고, 자동으로 라이브러리를 먼저 빌드한다.

하지만 실제로 workspace에 내장된 라이브러리 버전이 아닌, 다른 버전의 라이브러리와 링크되길 원한다면,

이 implicit dependency을 대체하는 explicit dependency를 build setting에서 만들면 된다.

기타

Target과 Configuration은 목적이 다르다.

Configuration은 하나의 Target에 대하여 다른 버전의 앱을 만들 수 있다는 것이다. (dev, inhouse, produntion)

Target은 다른UI로 해외앱을 내고싶다 할때 Target을 쓰는게 일반적이다 (무료/유료 버전의 구분도 비슷한 맥락이다.)

##자료출처##

https://zeddios.tistory.com/706?category=682196

Clone this wiki locally