티스토리 뷰

iOS

[iOS] Xcode Project, Target, Build Settings

Kim_Baechu 2020. 12. 28. 23:43

프로젝트와 타겟에 대해서 알아보겠습니다.

PROJECT

Xcode프로젝트는 하나 이상의 소프트웨어를 만드는 데 필요한 모든 파일, 리소스, 정보를 위한 저장소입니다.

프로젝트는 모든 타겟에 대한 기본 빌드 설정을 정의합니다.

 

Xcode project file이 포함하는 정보

- 소스 파일에 대한 참조

  • 헤더파일과 구현 파일을 포함한 소스 코드
  • 내부 및 외부 라이브러리와 프레임워크
  • 리소스파일
  • 이미지파일
  • nib파일

- structure 네비게이터에서 소스파일을 구성하기 위한 그룹

- 프로젝트 레벨 빌드 설정, 프로젝트에 하나 이상의 빌드 구성을 할 수 있습니다. (디버그와 릴리즈 빌드 설정)

- 타겟, 타겟들이 명시하는 것:

  • 프로젝트에 의해 만들어진 한 제품의 참조
  • 제품을 빌드할때 필요한 소스파일의 참조
  • 제품을 빌드할 때 필요한 설정, 다른 타겟에 대한 의존성과 다른 설정들

- 디버깅하거나 테스트할때 사용하는 실행 환경, 각각의 실행 환경이 명시하는 것

  • Xcode에서 실행하거나 디버그할 때 실행할 수 있는 것
  • 실행할 것에 전달 될 커맨드라인 전달인자
  • 프로그램이 실행될 때 설정될 환경 변수

프로젝트는 혼자 있을 수도 있고 워크스페이스에 포함될 수도 있습니다.

Xcode 스키마를 사용해서 특정 시간에 어떤 타겟, 빌드 설정, 실행 설정이 활성화되는 것을 명시할 수 있습니다.

 

TARGETS

타겟은 빌드할 제품을 정하고 프로젝트나 워크스페이스에 있는 파일에서 제품을 빌드하기 위한 지시사항을 가지고 있습니다.

타겟은 하나의 제품을 정의합니다.

이것은 빌드 시스템에 대한 입력을 구성합니다.

빌드 시스템은 제품을 빌드하기 위해 필요한 소스파일과 소스파일을 처리하기 위한 지시사항을 말합니다.

프로젝트는 하나 이상의 타겟을 가지고 있을 수 있고 각각의 타겟은 하나의 제품을 생성합니다.

 

제품을 빌드하기 위한 지시사항은 build settings 와 build phases 형식을 따르고 Xcode 프로젝트 편집기에서 시험하고 수정할 수 있습니다.

타겟은 프로젝트 빌드 설정을 상속합니다. 하지만 타겟에 다른 세팅을 override할 수 있습니다.

한 번에 하나의 타겟만 활성화 할 수 있고 Xcode 스키마가 활성 타겟을 정합니다.

 

타겟과 타겟이 만든 제품은 다른 타겟과 관련이 있을 수 있습니다.

만약에 타겟이 빌드하기 위해서 다른 타겟의 output을 요청한다면 그 첫 번째 타겟은 두 번째 타겟에 의존한다고 합니다.

만약 각각의 타겟이 같은 워크스페이스에 있다면, Xcode는 의존성을 확인하고 요청된 순서대로 빌드합니다.

그러한 관계를 암묵적 의존성(implicit dependency)이라고 합니다.

명시적 의존성(explicit dependency) 역시 빌드 설정에서 정할 수 있고, Xcode가 암묵적 의존성이 있다고 예상하는 것을 실제로 의존성이 없는 것처럼 명시할 수 있습니다.

예를 들어, 같은 워크스페이스에서 라이브러리와 그 라이브러리에 연결된 애플리케이션을 동시에 실행할 수 있습니다.

Xcode는 이 관계를 발견하고 라이브러리를 자동으로 먼저 빌드할 수 있습니다.

그러나 실제로 작업 영역에 빌드된 라이브러리가 아닌 다른 버전의 라이브러리에 대해 링크하려는 경우 빌드 설정에 명시적 의존성 만들어 이 암시적 의존성을 override할 수 있습니다.

 

Build Settings

빌드 설정은 어떻게 특정 측면의 제품 빌드과정이 수행될 지에 관한 정보를 포함하는 변수입니다.

예를 들어 빌드 설정에 있는 정보는 Xcode가 어떤 옵션을 컴파일러에 전달할지 정할 수 있습니다.

 

프로젝트나 타겟 레벨에서 빌드 설정을 지정할 수 있습니다.

각각의 프로젝트 레벨 빌드 설정은 명시적으로 재정의 되지 않는 한 프로젝트에 있는 모든 타겟에 적용됩니다. 

 

각각의 타겟은한 제품을 빌드하기 위해 필요한 소스파일을 구성합니다.

빌드 설정은 특정 방법으로 타겟의 제품을 빌드하는 데 사용되는 빌드 설정 세트를 지정합니다.

예를 들어 제품의 디버그, 릴리즈 빌드를 위해 별도의 빌드 설정을 갖는 것이 일반적입니다.

 

Xcode의 빌드 설정에는 투 부분이 있습니다. "설정의 타이틀과 정의"

빌드 설정 타이틀은 빌드 설정을 식별하며 다른 설정 내에서 사용할 수 있습니다.

빌드 설정 정의는 Xcode가 빌드 할 때 빌드 설정 값을 결정하는 데 사용하는 상수 또는 formula입니다.

빌드 설정은 Xcode 유저 인터페이스에서 빌드 설정을 표시하는 데 사용되는 display name이 있을 수 있습니다. 

 

프로젝트 템플릿으로부터 새로운 프로젝트를 만들 때 Xcode에서 제공하는 기본 빌드 설정 외에도 프로젝트나 특정 타겟에 대한 사용자 정의 빌드 설정을 만들 수 있습니다.

조건부 빌드 설정을 지정할 수 있습니다.

조건부 빌드 설정의 값은 하나 이상의 필수 구성 요소가 충족되는지 여부에 따라 달라집니다.

예를 들어 이 메커니즘을 통해 목표한 아키텍쳐 기반으로 제품을 빌드하는데 사용할 SDK를 지정할 수 있습니다.

*SDK(Software Development Kit)

.xcodeproj

프로젝트

 

PROJECT

  • 배포 최소 버전
  • 디버그, 릴리즈 빌드 설정
  • 다국어지원

타겟

- 앱, 프레임워크, 유닛테스트, 위젯 등

- 무료버전/유료버전 ( 참고 : www.raywenderlich.com/2404-how-to-create-both-a-paid-and-lite-version-of-an-iphone-app )

 

TARGETS

  • 배포할 앱의 최소 버전 OS
  • 매인 Interface(storyboard)
  • 가로모드지원
  • 상태바 스타일(Dark, Light)
  • 앱 아이콘 소스, 런치스크린
  • 지원하는 intent
  • 그 외...

 

댓글
공지사항