2012-07-23 4 views
34

Xcode 작업 영역을 사용하여 서로 종속성이있는 프로젝트를 구성하는 것을 이해하지 못합니다. 예를 들어, 많은 개발자가 다음과 같은 작업 공간 구조를 만들었습니다.Xcode 작업 영역과 중첩 프로젝트

 
Workspace 
|-- App 
|-- A Common Library 
|-- Another Common Library 

어떤 이점이 있습니까? 누군가 "App"프로젝트를 직접 열면 실제로 앱을 만들 수 없을까요? 그들은 필요한 의존성을 가진 작업 공간이 있다는 것을 인식해야합니다. 그것은 더 나은 방법처럼 날 것으로 보인다

은 다음과 같이 중첩 된 프로젝트를 사용하는 것입니다

 
App 
|-- Libraries 
| |-- A Common Library 
| |-- Another Common Library 

그런 다음 어떤 프로젝트는 그 구축 할 수없는 존재하지 않습니다. 그것은 또한 Git의 서브 모듈에 대한 아이디어와 더 비슷하게 보입니다.

작업 공간에서 볼 수있는 유일한 용도는 공통 프로젝트를 서로 의존성없이 그룹화하는 것입니다. 내가 뭔가를 놓칠 수 있기 때문에 이것에 대한 다른 사람들의 생각을 듣고 싶습니다.

+22

Woa!실제로 Xcode에 관한 Xcode 태그 질문입니다. :) – Almo

+1

@ Almo : 며칠마다 발생합니다. 그들은 대개 반대의 문제가 있습니다. 적용되지 않을 때 [objc]라는 태그가 붙습니다. :) –

+1

작업 영역을 사용하는 몇 가지 이유가 여기에 언급되어 있습니다. https://developer.apple.com/library/ios/featuredarticles/XcodeConcepts/Concept-Workspace.html – pi3

답변

17

프로젝트 독립성을 유지하면서 프로젝트를 결합하고자 할 때 작업 공간을 사용합니다.

작업 공간을 사용하는 예제는 매우 단순한 것에서 더 복잡한 것으로 진행되는 일련의 자습서 프로젝트입니다. 각 프로젝트는 독립 실행 형 프로젝트로 작동 할 수 있지만 작업 영역에서 함께 그룹화하면 전체 프로젝트를 조직하는 데 도움이됩니다.

또 다른 예로는 클라이언트 용으로 개발 된 앱이 있습니다. 이 앱은 독립 실행 형 앱과 전체 프로젝트의 모듈로 작동합니다. 독립적 인 프로젝트는 독립 실행 형 응용 프로그램을 빌드 할 수 있습니다. 다른 응용 프로그램은 두 개의 프로젝트가 포함 된 작업 영역을 사용합니다. 응용 프로그램의 모듈 버전은 특별한 체계로 만들어지며이 결합 된 응용 프로그램은 작업 영역을 사용하지 않고 빌드되지 않습니다.

위의 두 가지 상황을 비꼬는 한 가지 방법은 빌드 폴더를 저장하는 것입니다. 튜토리얼 프로젝트 그룹을위한 고유 한 폴더에 빌드 제품을 넣으려면 Xcode 환경 설정을 변경하고, 다른 앱 설정에서는 모듈에 대한 공통 빌드 폴더를 사용해야합니다.

다른 경우에는 프로젝트가 많은 프로젝트가 있습니다. 이러한 상황에서 도서관 프로젝트는 안정적입니다. 도서관 프로젝트를 더 이상 개발하지 않으므로 프로젝트를위한 또 다른 리소스입니다. 프로젝트 리소스의 파일 시스템 조직이 내 Xcode 프로젝트의 조직을 다소 반영하는 곳에서 작업하는 것이 더 쉽습니다. 따라서이 라이브러리 프로젝트는 기본 프로젝트의 파일 계층에 복사됩니다. 라이브러리를 개발하고 여러 프로젝트에서 사용하는 경우에는 작업 영역을 사용하는 것이 좋습니다. 편의를 위해 나는 종종 걱정하지 않는다.

때로는 작업 공간을 임베디드 프로젝트가 포함 된 프로젝트와 결합하기도합니다.

내 생각에 조직 도구, 임베디드 프로젝트 및 작업 공간 모두 장점과 문제점이 있습니다. 나는 특정 상황에 따라 하나 또는 다른 하나 (또는 ​​조합)를 사용하기로 선택한다.

+0

귀하의 통찰력에 감사드립니다. 나는 당신의 요점에 동의하지만, 도서관이 유동적 일지라도 나는 작업 공간 사용의 이점을 보지 못한다. 라이브러리가 Git 저장소에 유지되면 프로젝트를 하위 모듈로 추가 한 다음 필요에 따라 하위 모듈을 업데이트 할 수 있어야합니다. – mark

+0

예, 자식 서브 모듈은 라이브러리 개발을 관리하는 대체 방법입니다. 서브 모듈은 많은 iOS 개발자가 지식 부족에서부터 다른 버전 제어 시스템을 사용해야하는 다양한 이유로 사용할 수없는 고급 git 기능입니다. 이러한 상황에서 작업 공간은 임베디드 프로젝트보다 더 나은 선택 일 수 있습니다. –

+0

@ Mr.Berna - 미안하지만, xcode와 함께 git를 사용하는 것은 고통 스럽습니다 ... 당신이 어떤 버전/브랜치/포크를 가지고 있더라도 모든 프로젝트에서 사용하고있는 것은 무엇이든간에 당신은 디렉토리를 이용해서 직접 디렉토리를 사용하고 터미널을 사용하지 않으면 메모를 수동으로. – SpaceDog

1

기본 프로젝트의 프레임 워크에 중첩 프로젝트를 추가하여 .framework 제품에 포함시킬 수있었습니다.

Main 
|-- Main 
|-- MainTests 
|-- Frameworks 
| |-- CommonLibrary.xcodeproj 
| |-- AnotherCommonLibrary.xcodeproj 
| |-- UIKit.framework 
| |-- Foundation.framework 
| |-- CoreFoundation.framework 
|-- Products 

는 프로젝트에 범용 프레임 워크를 추가 this Great Tutorial by Jeff Verkoeyen를 참조하십시오. 처음에는 쉬운 일이 아니지만 계속해서 노력하면 계속 걸릴 것입니다.

+0

각 단일 .xcodeproj에 CocoaPod를 설치하면이 구조가 가능합니까? – user023