programing

Xcode: 타깃과 스킴이란 쉬운 언어로 무엇입니까?

minimums 2023. 4. 18. 21:56
반응형

Xcode: 타깃과 스킴이란 쉬운 언어로 무엇입니까?

네, 제목에 적혀있네요:-) 쉬운 영어로 무슨 뜻이죠?저는 애플 웹사이트의 설명을 잘 이해하지 못하고 타겟의 이름을 바꿔야 하는데, 그 이후에는 아무 것도 작동하지 않습니다.

Workspace와 Project에도 추가했습니다!

  • 작업영역 - 하나 이상의 프로젝트를 포함합니다.이 프로젝트들은 보통 서로 관련되어 있습니다.
  • 프로젝트 - 코드 및 리소스 등이 포함되어 있습니다(익숙할 것입니다).
  • 대상 - 각 프로젝트에는 하나 이상의 대상이 있습니다.
    • 각 타깃은 해당 프로젝트의 빌드 설정 목록을 정의합니다.
    • 각 타깃은 구축 시 포함/사용하는 클래스, 리소스, 커스텀스크립트 등의 목록도 정의합니다.
    • 일반적으로 대상은 동일한 프로젝트의 서로 다른 분포에 사용됩니다.
      • 예를 들어 프로젝트에는 "일반" 빌드와 추가 테스트 기능이 있는 "사무실" 빌드의 두 가지 타깃이 있으며 여러 배경 음악 트랙과 트랙을 변경하는 버튼이 포함될 수 있습니다(현재와 같이).
      • 클래스 및 리소스를 추가할 때 기본 대상에 추가하는 데 익숙해질 것입니다.
      • 대상에 추가할 클래스/리소스를 선택하고 선택할 수 있습니다.
        • 이 예에서는 사무실 빌드에 추가된 "DebugHandler" 클래스가 있습니다.
      • 테스트를 추가하면 새 대상도 추가됩니다.
  • 구성표 - 구성표는 "빌드", "테스트", "프로파일" 등을 누를 때 발생하는 작업을 정의합니다.
    • 일반적으로 각 타겟에는 적어도1개의 스킴이 있습니다.
    • [ Scheme ]> [ Manage Schemes ]순서로 이동하여 [Autocreate Schemes Now]를 눌러 타겟의 스킴을 자동 생성할 수 있습니다.

타깃은 Xcode에서 "빌드"를 실행하여 작성된 최종 제품입니다.애플리케이션, 프레임워크, 정적 라이브러리 또는 유닛 테스트 번들일 수 있습니다.어떤 것이든 일반적으로 "빌트 제품" 폴더의 단일 항목에 해당합니다.

구성표는 함께 작업하는 대상 모음을 나타냅니다.Xcode에서 다양한 액션(실행, 테스트, 프로파일 등)을 선택할 때 사용할 대상을 정의합니다.실행, 보관 및 프로파일 작업에 기본 앱 대상을 사용하고 테스트 작업에 단위 테스트 대상을 사용하는 하나의 구성표만 있는 경우가 많습니다.두 개의 관련 앱을 빌드하는 경우 동일한 단위 테스트 번들을 사용하지만 다른 앱 대상을 사용하는 두 개의 스키마가 있을 수 있습니다.

스킴(Xcode 4에서 도입)의 주된 장점은 선택한 타겟을 전환하지 않고도 앱 실행과 유닛 테스트 사이를 전환할 수 있다는 것입니다.

저는 시각적인 사람이기 때문에 그림을 사용해서 개념을 설명하겠습니다.

대상이 여러 개 있는 경우 Xcode의 실행, 테스트, 프로파일액션과 일대일로 일치시킬 수 있습니다.이 개념은 스킴을 정의합니다.

여기에 이미지 설명 입력

타겟프로젝트의 버전입니다.즉, 타겟은 빌드 기간 동안 사용하는 클래스나 리소스가 약간 다릅니다.프로젝트에는 별도의 배포 요구 사항에 대해 여러 빌드 시간 설정이 있을 수 있습니다.

X코드 구조

Workspace  
  -> Project 
    -> Target 
     -> Dependency 
      -> Scheme 
        -> Action
        -> Build Configuration  
          -> Build Configuration File(.xcconfig) 

Workspace ( ).xcworkspace - 의 ) - -여 of of of of of of of of of of of of of of of of ) ) ) 。projects 다음 cross-project references [대략]

  • Workspace에는, 모든 「」가 포함되어 있습니다.schemes ★★★★★★★★★★★★★★★★★」projects
  • Workspace " " " 를 처리합니다.implicit dependencies [대략]

관찰:

  • 서로 다른 프로젝트를 동일한 내부에서 작업하는 것이 안전합니다.workspace 잡지 마세요
//if you try to open two projects on two Xcode instances
Couldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[About] 와의 작업workspace에서 을 생성하다Pods

Project ( ).xcodeproj - 용 입니다.- 「 」targets ★★★★★★★★★★★★★★★★★」scheme★★★★★★★★★★▼

한 also도.ProjectsBuild Configuration(가)에 의해 표시됨)scheme 및 )의 개요Build Configuration File [대략]

의 「」를 할 수 .ProjectWorkspace

File -> Save As Workspace...

[워크스페이스 VS 프로젝트]

Target -PBXNativeTarget을 생성하는빌드 합니다.다음을 생성하는 빌드 설정의 특정 집합을 정의합니다.

  • Application target
  • Library and framework targets
  • Test
  • Aggregate예를 들어, 이 기능을 사용하여[About],Universal framework ★★★★★★★★★★★★★★★★★」Umbrella framework

Scheme

작업(실행, 테스트, 프로파일, 분석, 아카이브) + 구성(추가 인수, [빌드 구성], 진단) 포함

CI에서 도움이 되는 스킴을 공유할 수 있습니다.Carthage[Example]... 및 위치:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency -Targets 수 있다dependencies의존성은 소스 링크입니다.이러한 의존관계는 정적 또는 동적으로[About] 링크할 수 있습니다.이러한 의존관계에는, 다음의 2개의 타입이 있습니다.

  • Explicit Dependency[About] - 동일한 프로젝트 또는 중첩된 프로젝트에 위치한 종속성의 소스 코드
  • Implicit Dependency[About] - 동일한 워크스페이스의 일부인 프로젝트에 있는 종속성의 소스/닫힌 코드.

[어휘]

tldr; 타겟에는 모듈/프레임워크/라이브러리 또는 앱/엔드 제품(예: 시계 구축 지침)을 구축하는 지침이 포함됩니다.OS 앱과 iOS 앱.스킴은 빌드 액션, 테스트 액션 또는 아카이브 액션과 같은 특정 액션에 대응하는 방법을 알고 있습니다.

WWDC16 비디오가 표시되는 것을 확인합니다.Xcode 소개 [45:13]보다 깊은 지식을 얻고 싶은 경우는, 비디오 전체를 봐 주세요.그 비디오는 이해하기 쉬우면서도 매우 기초적이다.내 대답은 대부분 그것에서 벗어난다.


스킴

구성표는 실행할 대상을 지정하는 방법이며 실행 방법에 대한 정보도 포함되어 있습니다.

예를 들어 iOS 앱과 Watch 앱으로 프로젝트를 진행할 수 있으며, 이 경우 iOS 앱을 실행하는 스킴과 Watch 앱을 실행하는 스킴이 각각 하나씩 있습니다.

실행은 디버거에서 내 앱을 실행합니다.

테스트가 실행됩니다.

Profile이 앱의 성능을 측정할 수 있도록 계측기에서 실행합니다.

Analyze는 Xcode의 정적 분석기를 실행하여 그렇지 않았다면 놓쳤을 수 있는 문제를 발견하는 데 도움이 됩니다.

마지막으로 Archive 액션은 출시용 앱을 만들어 아카이브에 저장합니다.이것에 의해, 테스터나 앱 스토어에 배포하거나, 향후의 크래시 로그의 디심볼리케이션이나 기호를 위해서 보존할 수 있습니다.

프로젝트.

프로젝트는 코드와 리소스를 Xcode로 구성하는 데 사용하는 문서입니다.

디스크에 있는 소스 코드 파일 및 리소스 파일, 실제로 이러한 파일을 앱과 같은 제품에 빌드하는 대상, 대상이 제품을 빌드하는 방법을 구성하는 빌드 설정, 실행과 같은 작업을 수행하는 방법을 구성하는 구성표가 있습니다.

프로젝트 설정에 액세스하려면 네비게이터에서 프로젝트를 선택하고 편집기 맨 위에 있는 팝오버를 선택한 다음 프로젝트를 선택합니다.

대상

디스크의 소스 코드 파일 및 리소스 파일, 실제로 이러한 파일을 앱과 같은 제품에 빌드하는 대상, 대상이 제품을 빌드하는 방법을 구성하는 빌드 설정, 실행 [테스트, 빌드]와 같은 작업을 수행하는 방법을 구성하는 구성표가 있습니다.타겟에는 앱이나 프레임워크와 같은 하나의 것을 구축하기 위한 명령이 포함되어 있습니다.

당신의 타겟이 생산하는 것을 제품이라고 합니다.대상이 제품을 빌드하기 위해 수행하는 일련의 단계를 빌드 단계라고 합니다.

마지막으로 타깃에는 제품을 빌드하는 방법을 구성하기 위한 빌드 설정이 있습니다.

한 가지 주의할 점은 프로젝트와 타깃 모두 빌드 설정이 있으며 타깃은 프로젝트레벨에서 설정된 값을 상속받지만 타깃 고유의 값으로 덮어쓸 수 있습니다.

타겟의 빌드 단계에서는 의존관계가 먼저 구축되고 타겟의 소스 파일이 컴파일되며 타깃이 라이브러리와 프레임워크에 링크됩니다.

요약:

대상

제품/모듈/패키지를 빌드/실행하기 위한 파일 세트 통합 지원

  • 보통 앱스토어에 발송하는 상품으로 끝납니다.
  • 단, 대부분의 경우 유닛 테스트를 실행하는 모듈일 수 있습니다.

하나의 앱이 시계와 함께 iOS 타깃을 가질 수 있는 것처럼OS 타깃또는 하나의 iOS 타깃일 수도 있습니다.또는 단일 iOS 타깃과 테스트 타깃 등을 사용할 수도 있습니다.

타겟의 빌드 단계>> 컴파일 소스로 이동하면 해당 타겟에 대해 빌드되고 있는 모든 파일이 표시됩니다.예를 들어:

여기에 이미지 설명 입력

Apple 문서를 명시적으로 인용하려면:

대상은 빌드할 제품을 지정하고 프로젝트 또는 작업 공간의 파일 집합에서 제품을 빌드하기 위한 지침을 포함합니다.타깃은 단일 제품을 정의하고 해당 제품을 빌드하는 데 필요한 소스 파일 및 소스 파일 처리에 대한 명령 등 빌드 시스템에 대한 입력을 정리합니다.프로젝트에는 하나 이상의 대상이 포함될 수 있으며 각 대상은 하나의 제품을 생성합니다.

제품을 빌드하기 위한 지침은 빌드 설정 및 빌드 단계의 형태를 취하며 Xcode 프로젝트 편집기에서 이를 검토하고 편집할 수 있습니다.대상은 프로젝트 빌드 설정을 상속하지만 대상 수준에서 다른 설정을 지정하여 프로젝트 설정을 재정의할 수 있습니다.액티브한 타겟은 한 번에1개만 지정할 수 있습니다.Xcode 스킴은 액티브한 타겟을 지정합니다.

대상 및 대상 제품이 다른 대상과 관련될 수 있습니다.구축하기 위해 타깃이 다른 타깃의 출력을 필요로 하는 경우, 첫 번째 타깃은 두 번째 타깃에 의존한다고 한다.두 타겟이 같은 워크스페이스에 있는 경우 Xcode는 의존관계를 검출할 수 있으며, 이 경우 필요한 순서로 제품을 빌드합니다.이러한 관계를 암묵적 의존관계라고 합니다.빌드 설정에서 명시적인 대상 종속성을 지정할 수도 있고 Xcode가 암묵적 종속성을 가질 것으로 예상되는 두 개의 대상이 실제로 종속되지 않도록 지정할 수도 있습니다.예를 들어 라이브러리와 해당 라이브러리에 연결된 애플리케이션을 동일한 작업 공간에서 모두 구축할 수 있습니다.Xcode는 이 관계를 검출해, 최초로 라이브러리를 자동적으로 구축할 수 있습니다.그러나 워크스페이스에 내장된 버전이 아닌 라이브러리의 버전에 실제로 링크하려는 경우 빌드 설정에 명시적 종속성을 생성하여 이 암묵적 종속성을 재정의할 수 있습니다.

스킴

특정 타깃은 다양한 액션을 수행할 수 있습니다.

  • 구축하다
  • 달려.
  • 시험
  • 프로필
  • 기록 보관소

모든 진단을 유효하게 하는 방식(디버깅 속도가 느려지는 방식)과 그렇지 않은 방식을 사용할 수 있습니다.또는 특정 성능 관련 테스트를 실행하는 체계와 단위 테스트와 성능 테스트를 모두 실행하는 체계를 비교합니다.다음과 같은 작업을 수행하도록 체계를 편집할 수 있습니다.

  • 여러 타깃 구축

  • 작업 전후에 스크립트 실행

  • 작업 전후에 전자 메일 보내기

  • 메모리 관리 진단 실행

  • 임의의 액션에 대해 디버깅빌드 또는 릴리스 빌드를 생성합니다.

자세한 내용은 프로젝트의 빌드 구성표 사용자 정의를 참조하십시오.


모든 것을 종합하면:

실행을 누르면 Xcode가 선택한 방식을 확인합니다.연결된 대상을 찾습니다.타겟의 빌드 단계와 그 빌드 설정(타깃 설정에 의해 오버라이드되지 않은 프로젝트 설정이 포함됨)을 사용하여 선택한 타깃에 제품을 빌드합니다(타깃처는 iPhone 시뮬레이터, 물리 iPhone 또는 Watch OS 등).여기에 이미지 설명 입력

다시 한번 WWDC 비디오를 보세요!

제 의견:

타깃 - 하위 추상화 - 다양한 종류의 빌드.각 타깃에는 자체 빌드 설정이 있습니다(여러 타깃으로 분할할 경우 각 타깃별로 큰 시트를 개별적으로 관리합니다).타겟에는 파일을 포함/제외하는 편리한 방법이 있으므로 파일 단위로 빌드를 효과적으로 구성할 수 있습니다.

체계(높은 추상화)는 대상을 다양한 배포 방법(실행, 테스트, 보관)으로 안내합니다.환경 파라미터에 의한 빌드를 적절히 구성하는 방법이 있습니다만, 타겟의 빌드 설정을 채용하고 있습니다.스킴의 작성/편집/삭제는 타겟보다 저렴하고 간단합니다.

여러 가지 방법으로 하나의 대상을 안내하는 여러 가지 체계를 가질 수 있습니다.

언급URL : https://stackoverflow.com/questions/20637435/xcode-what-is-a-target-and-scheme-in-plain-language

반응형