내가 기존에 만들었던 강아지 밥주는 앱(DogFood ...)를 기준으로 설명해보겠다.

PROJECT_FILE_NAME.xcodeproj

이녀석의 정체는 파일이 아니다. 디렉토리다! 우클릭후 "패키지 내용보기"로 내부를 확인할 수 있다.

들어가게 되면, 3개의 파일이 보인다. 각각 알아보자

모종의 이유로 다음과 같은 순서로 설명하겠다.

  1. xcuserdata
  2. project.pbxproj
  3. project.xcworkspace

.xcuserdata

프로젝트 자체에 크게 영향을 주지 않는 "개인 설정"을 담은 디렉토리

실제 내부를 보면, break point와 같은 것들이 들어가 있다.

project.pbxproj

프로젝트 내부 파일들의 Reference를 파일 유형에 따라 저장

  • 보다보니 어디서 많이 보던 친구다.
  • 협업시 conflict의 주범이다.
  • 두 명 이상의 팀원이 파일의 순서를 바꾸거나, 동시에 추가하거나 등등의 행위를 했을 경우 충돌날 수 있다.
  • 자신이 한 작업만 잘 merge하거나, 서로 얘기하고 적용하는 방법을 취해야 한다.

project.xcworkspace

얘도 디렉토리다!

들어가보니, 또 이상한 녀석들이 있다. 하나씩 알아보자.

xcuserdata

내부를 보니, 위에 최상위 폴더에서 보았던 xcuserdata와 같다.

xcshareddata

workspace에 공유된 설정을 담은 디렉토리

contents.xcworkspacedata

프로젝트의 Reference를 저장하고 있는 파일

이 프로젝트는 단순한 프로젝트라 프로젝트가 연결되어 있지 않다. 하지만..

거대한 프로젝트의 경우, 모듈화를 통해 프로젝트를 나누고, 그 프로젝트들을 한 프로젝트에 다시 엮어서 관리하는 경우가 있다. 이런 경우는 위와 같이 상당히 파일이 방대해진다는 것을 알 수 있다.

PROJECT_FILE_NAME.xcworkspace

이녀석도 디렉토리다!

어? 그런데 상당히 익숙한 화면이다. 위에 있는 PROJECT_FILE_NAME.xcproject 내부의 project.xcworkspace와 똑같이 생겼다.

그런데, 실제 contents.scworkspacedata 를 들어가보면 약간 다르다.

위의 project.xcworkspacedata/contents.xcworkspacedata 의 경우와 다르게 생겼다.

지금 설명하는 PROJECT_FILE_NAME.xcworkspace의 경우, cocoaPods가 생성해주기 때문에 다른 contents 내역을 가진다. 실제로 보면, Pods 프로젝트가 연결되어 있음을 확인할 수 있다.

CocoaPods의 pod install을 하면, 이 .xcworkspace 가 생성되는 것이다! 즉, 본래 프로젝트와 별도로 Project를 만들어서 라이브러리 의존성을 관리할 수 있도록 해주는 것. 결과적으로 내가 만든 Project, Pod Project를 엮어 contents에 적어두고, PROJECT_NAME.xcworkspace로 관리하라는 것. 그래서 cocoaPods를 사용하면 .xcworkspace로 작업해야 하는 것이다.

Reference

profile
Goal, Plan, Execute.

0개의 댓글