iOS) Target in Xcode?

송태환·2020년 5월 5일
0

iOS 기초

목록 보기
1/6
post-thumbnail

iOS 앱을 개발하면서 파일을 생성하거나 설정을 할 때 target 을 종종 발견할 때가 있습니다.
뿐만아니라 target 이 여러개인 프로젝트도 종종 볼 수 있습니다.
Build Settings, Build Phases 와도 밀접한 관련이 있는 Xcode target 에 대해 번역한 글입니다.

번역에 일부는 주관적인 해석이 들어가 있어 해석, 원문 순으로 언급하고 있습니다.

원문 출처: Apple Official Documentaiton

Xcode Target

target 은 빌드할 product 를 정하는 것 뿐만아니라 product 빌드 과정에 어떤 파일을 포함시킬 지, 빌드 과정의 순서 등에 대한 지시사항 혹은 설정도 포함하고 있습니다.

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.

하나의 targert 은 하나의 product 를 의미합니다.
target 은 빌드 시스템에서 해당 product 를 빌드하는데 필요한 소스파일과 이를 처리하는 지시사항 등과 같은 input 들에 대한 순서를 정합니다.

it organizes the inputs into the build system—the source files and instructions for processing those source files—required to build that product.

여러 프로젝트가 하나 이상의 target 을 포함할 수 있고 각 target은 하나의 product 를 생성합니다.

빌드 지시사항은 XcodeBuild Settings, Build Phases 에서 확인할 수 있고 수정할 수도 있습니다.

targetBuild Settings 의 내용을 그대로 이어 받아 사용할 수도 있지만 직접 설정할 수도 있습니다. active target 은 한번에 하나만 존재할 수 있고 Xcode schemeactive target 를 의미합니다.

target과 target 으로 만든 product는 다른 target과도 연관될 수 있습니다. 하나의 target 이 다른 target 의 결과물을 필요로 한다면, 첫번째 target두번째 target종속되어 있다고 할 수 있다.
또 다른 예로는 앞서 언급한 target 이 같은 workspace 에 있을 때, Xcode 는 설정된 순서로 빌드를 하는 경우, 두 target 간의 dependency (이하 의존성) 을 찾아낼 수 있습니다. 이러한 관계를 implicit dependency (이하 암묵적 의존성) 라고합니다. build settings에서 target 간 의존성을 직접 설정할 수 있고 Xcode암묵적 의존성 이 있다고 여기는 두 target 간 실제로는 의존성이 없다고 설정할 수도 있습니다.

예를 들어, 같은 workspace 에서 Library 와 해당 Library 를 사용하는 앱을 만든다고 생각해봅시다. Xcode 는 자동으로 둘 간의 관계를 찾아내고 Library먼저 빌드하게 됩니다. 뿐만아니라 해당 Library 가 아닌 특정 버전의 라이브러리를 사용할 경우 암묵적 의존성 대신 build settings 에서 직접 explicit dependency 를 설정 할 수 있습니다.

요약

  • target 은 프로젝트 빌드의 최종 결과물이라고 할 수 있습니다. (앱, 프래임워크, 라이브러리 등)
  • 하나의 프로젝트는 한 개 이상의 target 을 가질 수 있습니다.
  • target 에 정의된 빌드 설정에 따라 결과물이 달라질 수 있습니다.
    - 예) dev target 에서는 debug class 를 포함시키고, production target 에서는 test class 를 포함시킴
  • target 에는 프로젝트 빌드에 관한 설정과 빌드에 필요한 리소스들에 대한 내용을 담고 있습니다.
profile
호기심 많은 개발자

0개의 댓글