sourcetip

Xcode 프로젝트 대 Xcode 작업 공간 - 차이점

fileupload 2023. 5. 8. 22:25
반응형

Xcode 프로젝트 대 Xcode 작업 공간 - 차이점

저는 전체 생태계가 어떻게 작동하는지 이해하려고 노력하고 있습니다.iOS작동하다.
지금까지 저는 제 질문의 대부분에 대한 답을 찾을 수 있었지만(그리고 저를 믿으세요, 많은 질문이 있었습니다), 이번 질문에 대해서는 아직 명확한 답이 없는 것 같습니다.

XcodeProject와 XcodeWorkspace 파일의 차이점은 무엇입니까?

  1. 그들 둘의 차이점은 무엇입니까?
  2. 그들은 무엇에 책임이 있습니까?
  3. 팀/혼자 앱을 개발할 때 다음 중 어느 것과 함께 작업해야 합니까?
  4. 이 두 파일에 대해 제가 알아야 할 다른 사항이 있나요?

프로젝트 구조와 관련하여 당신이 이해해야 할 세 가지 핵심 항목이 있다고 생각합니다.대상, 프로젝트작업 영역입니다.대상은 제품/바이너리(예: 응용프로그램 또는 라이브러리)가 구축되는 방법을 자세히 지정합니다.여기에는 컴파일러 및 링커 플래그와 같은 빌드 설정이 포함되며 실제로 제품에 속하는 파일(소스 코드 및 리소스)을 정의합니다.빌드/실행할 때는 항상 하나의 특정 대상을 선택합니다.

코드와 리소스를 공유하는 대상이 몇 개 있을 수 있습니다.이러한 서로 다른 대상은 앱의 약간 다른 버전(iPad/iPhone, 다른 브랜드 등)이거나 앱과 동일한 소스 파일에 자연스럽게 액세스해야 하는 테스트 사례일 수 있습니다.이러한 모든 관련 대상을 프로젝트에서 그룹화할 수 있습니다.프로젝트에 모든 대상의 파일이 포함되어 있지만 각 대상은 관련 파일의 하위 집합을 선택합니다.빌드 설정도 마찬가지입니다.프로젝트에서 기본 프로젝트 범위 설정을 정의할 수 있지만 대상 중 하나에 다른 설정이 필요한 경우 언제든지 해당 설정을 재정의할 수 있습니다.

덮어쓰지 않는 한 모든 대상이 상속하는 공유 프로젝트 설정

재정의하지 않는 한 모든 대상이 상속하는 공유 프로젝트 설정

구체적인 대상 설정: PSE iPhone이 프로젝트의 Base SDK 설정을 덮어씁니다.

구체적인 목표 설정: PSE iPhone은 프로젝트의 설정을 무시합니다.Base SDK

Xcode에서는 항상 프로젝트(또는 워크스페이스)를 열고, 프로젝트에 포함된 모든 대상을 빌드/실행할 수 있지만 프로젝트를 빌드할 방법/정의가 없으므로 모든 프로젝트가 단순한 파일 및 설정 모음 이상이 되기 위해 하나 이상의 대상이 필요합니다.

실행할 프로젝트의 대상 중 하나 선택

실행할 프로젝트의 대상 중 하나 선택

대부분의 경우 프로젝트만 있으면 됩니다.원본에서 작성한 종속성이 있는 경우 를 하위 프로젝트로 포함할 수 있습니다.하위 프로젝트는 별도로 열거나 수퍼 프로젝트 내에서 열 수 있습니다.

demoLib는 하위 프로젝트입니다.

demoLib는 하위 프로젝트입니다.

하위 프로젝트의 대상 중 하나를 수퍼 프로젝트의 종속성에 추가하면 하위 프로젝트가 변경되지 않은 경우 자동으로 작성됩니다.여기서의 장점은 프로젝트와 종속성 모두에서 동일한 Xcode 창에서 파일을 편집할 수 있으며 빌드/실행할 때 프로젝트와 하위 프로젝트의 대상 중에서 다음을 선택할 수 있다는 것입니다.

하위 프로젝트에서 대상 실행

그러나 라이브러리(하위 프로젝트)가 다른 다양한 프로젝트(정확히는 대상)에서 사용되는 경우에는 동일한 계층 수준에 라이브러리를 배치하는 것이 좋습니다. 즉, 작업 공간이 필요합니다.워크스페이스는 프로젝트를 포함하고 관리하며, 프로젝트에 직접 포함되는 모든 프로젝트(즉, 하위 프로젝트가 아님)는 동일한 수준에 있으며 대상이 서로 종속될 수 있습니다(프로젝트의 대상은 하위 프로젝트의 대상에 따라 달라질 수 있지만 그 반대는 아닙니다).

워크스페이스 구조

워크스페이스 구조

이 예에서는 두 앱(AnotherApplication / ProjectStructureExample) 모두 demoLib 프로젝트의 대상을 참조할 수 있습니다.이것은 다른 두 프로젝트 모두에 demoLib 프로젝트를 하위 프로젝트로 포함시켜도 가능하지만(이는 참조용이므로 중복이 필요하지 않음), 상호 의존성이 많은 경우 작업 공간이 더 적합합니다.워크스페이스를 열면 빌드/실행 시 모든 프로젝트의 대상 중에서 선택할 수 있습니다.

작업영역에서 대상 실행

프로젝트 파일을 개별적으로 열 수는 있지만 워크스페이스 파일을 열지 않으면 Xcode가 종속성을 해결할 수 없기 때문에 대상이 빌드되지 않을 수 있습니다.워크스페이스는 하위 프로젝트와 동일한 이점을 제공합니다.종속성이 변경되면 Xcode가 최신 상태인지 확인하기 위해 종속성을 재구축합니다(일부 문제가 있었지만 안정적으로 작동하지 않는 것 같습니다).

질문은 간단히 요약하면 다음과 같습니다.

프로젝트에는 파일(코드/리소스), 설정 및 해당 파일 및 설정에서 제품을 빌드하는 대상이 포함됩니다.워크스페이스에는 서로 참조할 수 있는 프로젝트가 포함되어 있습니다.

두 가지 모두 프로젝트 전체를 구성하는 책임이 있지만 수준은 다릅니다.

대부분의 경우 프로젝트로 충분하다고 생각합니다.특별한 이유가 없는 한 작업 공간을 사용하지 마십시오.또한 나중에 언제든지 작업 공간에 프로젝트를 포함할 수 있습니다.

위의 글이 바로 그런 내용인 것 같습니다.

3)에 대한 한 가지 언급이 있습니다. 타사 라이브러리를 자동으로 처리하는 코코아 포드는 작업 공간을 사용합니다.그러므로, 당신이 그것들을 사용할 때, 당신도 그것들을 사용해야 합니다.CocoaPods(많은 사람들이 하는 일).

작업영역은 프로젝트의 모음입니다.프로젝트 간에 상관 관계가 있을 때 프로젝트를 구성하는 것이 유용합니다(예:프로젝트 A에는 프로젝트 B로 제공되는 라이브러리가 포함되어 있습니다.워크스페이스를 구축하면 프로젝트 B가 컴파일되어 프로젝트 A)에 연결됩니다.
인기 있는 코코아 포드에서는 작업 공간을 사용하는 것이 일반적입니다.포드를 설치하면 프로젝트와 포드 라이브러리를 보관하는 작업 공간에 배치됩니다.

요컨대

  • Xcode 3은 부모-자녀 관계인 하위 프로젝트를 도입했습니다. 즉, 부모가 자식 대상을 참조할 수 있지만 그 반대는 아닙니다.
  • Xcode 4는 형제 관계인 워크스페이스를 도입했습니다. 즉, 모든 프로젝트가 동일한 워크스페이스에 있는 프로젝트를 참조할 수 있습니다.

Xcode 작업 공간 대 프로젝트

  1. 그들 둘의 차이점은 무엇입니까?

Workspace프로젝트 집합입니다.

  1. 그들은 무엇에 책임이 있습니까?

Workspace프로젝트 간의 종속성을 담당합니다. Project소스 코드에 대한 책임이 있습니다.

  1. 팀/혼자 앱을 개발할 때 다음 중 어느 것과 함께 작업해야 합니까?

선택은 프로젝트 유형에 따라 달라져야 합니다.예를 들어 프로젝트가 코코아 포드 종속성 관리자에 의존하는 경우 워크스페이스가 생성됩니다.

  1. 이 두 파일에 대해 제가 알아야 할 다른 사항이 있나요?

cross-project references[정보]

[Xcode 구성 요소]

iOS 프로젝트를 개발하기 위해 코코아팟을 사용했을 때,.xcworkspace파일, 당신은 프로젝트를 열어야 합니다..xcworkspace코코아 포드와 관련된 파일입니다.

파일 미리 보기

하지만 당신이Show Package Contents와 함께.xcworkspace파일, 당신은 찾을 수 있을 것입니다.contents.xcworkspacedata파일.

패키지 내용물

<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:BluetoothColorLamp24G.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:Pods/Pods.xcodeproj">
   </FileRef>
</Workspace>

다음 행에 주의하십시오.

location = "group:BluetoothColorLamp24G.xcodeproj"

.xcworkspace파일에 다음과 같은 참조가 있습니다..xcodeproj파일.

개발 환경:

macOS 10.14
Xcode 10.1

언급URL : https://stackoverflow.com/questions/21631313/xcode-project-vs-xcode-workspace-differences

반응형