Xcode - Project, Target, Scheme, Build Settings 란

Jenny·2023년 11월 27일

📦 Project

  • Xcode에서 Project는 하나 이상의 소프트웨어 제품을 빌드하는데 필요한 모든 파일(swift), resources 및 정보를 저장하는 저장소 입니다.
  • Project에는 하나의 이상의 Target을 포함하고 있습니다.
  • Project는 모든 Target에 대한 기본 빌드 설정을 정의 합니다.
  • Target 마다 따로 재정의(override) 하여 가질 수 있습니다.

🧾 Project가 가지고 있는 정보

  • Sources 파일에 대한 참조
    • 헤더파일을 포함하는 소스코드
    • 프레임워크와 라이브러리, internal과 external
    • 리소스 파일들
    • 이미지 파일들
    • 인터페이스 빌드 파일들(nib)
  • 구조 탐색기 내 소스 파일을 구성하는 데 사용되는 그룹
  • Project-level Build configraguration 프로젝트 수준의 빌드 설정 -> ex) release, debug
  • Target이 지정하는 Target
    • project에 의해 빌드된 하나의 Product에 대한 참조
    • 어떤 Pruduct를 빌드하는데 필요한 Sources들에 대한 참조
    • 다른 Target과의 의존성 관계를 포함하는 Target 수준의 빌드 설정
  • 프로그램을 디버깅하거나 테스트하는 데 사용할 수있는 실행 가능한 환경. 각 실행 환경은 다음으로 명시
    • Xcode에서 실행하거나 디버깅 할 때 실행할 실행 파일
    • 실행 파일에 전달할 명령 줄 인수 (있는 경우)
    • 프로그램이 실행될 때 설정되는 환경 변수 (있는 경우)

📁 Target

  • Target은 빌드할 제품을 지정하며, Project 또는 Workspace의 파일 셋에서 제품을 빌드하기 위한 지시사항을 포함한다.
  • 제품을 Build 하기 위해 필요한 빌드 시스템의 입력(Sources) 파일과 Sources파일을 처리하기 위한 명령어 등을 구성한다.
  • Target은 프로젝트 빌드를 설정(Build Settings)을 상속(Inheritance) 받지만, Target 수준에서 다른 설정을 지정하여 프로젝트 설정을 무시 가능하다.
  • Target은 한 번에 하나의 활성 Target만 있을 수 있고, Xcode의 Scheme은 활성 Target을 지정 할 수 있다.

빌드를 하기 위해서는 Target이 다른 Target을 Ouput으로 요구를 하면, "첫 번째 Target은 두 번째 Target에 의존한다 라고 말한다. 두 Target이 같은 Workspcae에 있으면 Xcode가 종속성을 발견 할 수 있으며, 종속성이 필요한 순서로 제품을 빌드한다. 이러한 관계를 "암시적 종속성" 이라고 한다.

🚀 Scheme

  • Xcode Scheme는 Build 할 Target들의 집합이다.
  • Build Settings, Build configuration, 실행할 테스트 들의 모음을 정희 할 수 있다.
  • 원하는 만큼 Scheme를 정의 할 수 있지만 한 번에 하나씩 만 활성화 할 수 있다.
  • Scheme을 프로젝트에 저장할지에 대한 여부를 지정할 수 있으며, 이 경우 프로젝트가 포함 된 모든 Workspace 또는 특정 Workspace 에서 사용할 수 있다.
  • 활성 Scheme 을 선택하면, 실행 대상 (즉, 제품이 빌드되는 하드웨어의 아키텍처)도 선택된다.

⚒️ Build Settings

  • Build SettingProduct 빌드 프로세스의 특정 측면을 수행하는 방법에 대한 정보가 들어있는 변수이다.
  • 빌드 설정의 정보는 Xcode가 컴파일러에 전달하는 옵션을 지정할 수 있다.
  • Project 또는 Target Level에서 Build Settings를 지정할 수 있으며 각 Proejct-Level 빌드 설정은 특정 Target 에 대한 빌드 설정에 의해서 명시적으로 무시되지 않는 한 프로젝트의 모든 Target 에 적용된다.

🥳 참고 사이트

profile
"Jenny 있게 iOS 개발을 하며 대체 불가능한 인재가 되자"

0개의 댓글