[Xcode] Target 이해해보기!

Do Gyung Kim (Bryan)·2023년 11월 27일
0

Journey2Tuist

목록 보기
2/2
post-custom-banner

Tuist 공부를 시작하면서 명확하지 않은 개념들이 너무 많다... 아직도 갈길은 멀다는 이야기~~
Target은 그래도 대충 이해하고 있었고, 한번씩 사용해봤지만 명확하지 않기에 정리를 해봅니다!

전체적인 Xcode 컨셉을 이해하기에 좋은 예시를 찾았다!

공식 문서

  • 애플 공식 문서의 설명

    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 instructions for processing those source files—required to build that product. Projects can contain one or more targets, each of which produces one product.

타겟은 하나의 제품을 생성한다. 그리고 제품을 생성하기 위해 필요한 instruction을 포함한다. 라고 요약할 수 있겠다. 하지만 뭔가 한번에 이해가 되지 않는다!
그래서 조금 더 찾아 봤는데 그렇게 어려운 컨셉이 아니었다!

TARGET!

Target은 Xcode가 무엇을 어떻게 빌드하게 결정하는 환경설정 이다.[1]
실제로 Xcode에서 타겟을 누르면 설정창 비슷한 모양이다.

즉, 같은 소스코드로 다른 설정을 가진 product를 만들 수 있는 것이다!
여기서 product는 뭐냐?!

Target이 빌드 할 수 있는 제품(product)은 앱, 라이브러리, 프레임워크, 유닛테스트 번들이 있다!

하나의 Target은 하나의 product를 생성한다.
프로젝트는 여러 Target을 가질 수 있다!

타겟을 설정함으로 하나의 프로젝트에서 여러 방식으로 제품을 생성 할 수 있다는 것이다!

그리고 한 프로젝트에 여러 타겟이 존재하고, A 타겟이 B 타겟의 product를 의존한다면, Xcode은 의존성을 알 수 있고, 빌드 순서를 조정하여 B 타겟을 먼저 빌드하게 된다. 이러한 것을 implicit dependency(암시적 의존성)이라고 한다.
만약 B타겟의 product의 빌드 되어있는 이전 버전을 사용하고 싶다면, 개발자가 이러한 implicit dependency를 덮어 쓸 수 있다 = explicit dependency라고 한다

예를 들어...!

혼자 사이드로 진행하는 프로젝트 규모가 아닌 대규모의 프로젝트에서의 상황이다.
해당 프로젝트는 아이폰 앱 프로젝트이다. 또한, App Extension으로 위젯을 만들었고, Watch OS도 지원할 예정이다.
여기서 앱, 위젯 , Watch OS는 라이브러리나 API, 소스파일 들을 공유 할 것이다. 동시에 공유하지 않는 파일도 존재할 것이다. 그렇기에 Watch OS를 테스트 하기위에 프로젝트 전체를 빌드하는 것은 너무 비효율 적이다!
그래서 타겟을 이용해, Watch OS에 필요한 파일들만 선택해 빌드를 하면, 효율적으로 프로젝트를 관리할 수 있을 것이다.!


TIPS



기본적으로 TargetProject Setting을 상속 받는다!

파일별로 Target Membership을 설정 할 수 있다
현재 위 상태로 Test Target에는 해당 BusTime.swift파일은 포함되지 않은 상태이다

참조

https://medium.com/@mihail_salari/scheme-vs-target-in-xcode-unraveling-the-mystery-9f301f870aec
https://dongminyoon.tistory.com/m/41

post-custom-banner

0개의 댓글