XcodeGen
팀프로젝트안에서 버전관리시 폴더 그룹변경 및 리소스 변경 시 [프로젝트명].xcodeproj 파일의 변경사항이 올라가면서
서로 충돌나는 경우가 종종 있다. xcodeproj파일은 xml로 이루어져 있어 직접 충돌을 해결할 수 도 있지만 워낙 복잡하게 변경사항이 바뀔 시 충돌해결하는데 꼬일수가 있고 휴먼에러가 발생할 수 있다. 이 때 XcodeGen을 사용하여 프로젝트를 관리하면 xcodeproj파일이 각자 빌드하여 사용하기 때문에 충돌날 일이 줄어들어 팀프로젝트시 빠르게 협업할 수 있는 큰 장점이 된다.
이외에도 target별로 dependency를 관리하거나 프로젝트 Settings를 project.yml에서 한번에 관리할 수 있는 장점이 있다.
XcodeGen설치
$ brew install xcodegen
XcodeGen은 project.yml파일로 Project설정을 관리한다.
project.yml파일을 만든 뒤 xcodegen만 실행해주면 설정에 맞게 프로젝트가 실행된다.
project.yml
project.yml은 Project Spec을 참고하여 작성하면 된다.
ProjXcodeGen을 샘플 프로젝트로 설정한 뒤 예시 탬플릿을 참고하여 설정
name: ProjXcodeGen
options:
createIntermediateGroups: true #path로 그룹핑
groupSortPosition: top # sort 기준
postGenCommand: pod install # 생성 이후 명령 실행
Debug: debug
Release: release
configFiles:
Debug: xcconfig/Project-Debug.xcconfig
Release: xcconfig/Project-Release.xcconfig
targets:
ProjXcodeGen:
platform: iOS
type: application
sources:
- ProjXcodeGen
configFiles:
Debug: xcconfig/ProjXcodeGen-Debug.xcconfig
Release: xcconfig/ProjXcodeGen-Release.xcconfig
xcodegen에서 xcconfig파일을 따로 추출하여 설정해야 하는데
buildSettingExtractor를 사용하여 xcconfig파일을 추출한 뒤 프로젝트 하위에 저장한다.
XcodeGen실행
이후 설정이 다 끝나면 프로젝트 상위에서 xcodegen명령어를 통해 실행하여 프로젝트를 설정한다.
+Cocoapods 설정시 추가 작업
xcodegen을 실행하고 project.yml안의 postGenCommand인 pod install이 자동으로 동작하면 위와같은 cocoapods경고 메세지가 출력된다. 확인해보면 xcconfig파일에 'Target Support Files/Pods-ProjXcodeGen/Pods-ProjXcodeGen.debug.xcconfig'을 include하라는 설정이 추가로 필요하다.
#include "Pods/Target Support Files/Pods-ProjXcodeGen/Pods-ProjXcodeGen.release.xcconfig"
위에서 추출한 xcconfig파일 상단에 #include로 위의 config를 설정한 뒤 다시 xcodegen을 실행하자.
성공적으로 셋팅 완료
+프로젝트 구조 설정
target의 sources에서 디렉토리 구조를 설정하여 셋팅이 가능하다.
상위 프로젝트(ProjXcodeGen)밑에 Sources와 Resources를 구조로 잡고싶다면 Sources, Resources를 sources에 입력해준다.
source의 루트디렉토리 기준으로 빌드하여 xcodeproj를 만들어 내기때문에 루트 디렉토리만 지정해 주어 사용한다.
source:
- Sources
- Resources
xcodegen실행 후 변경된 구조
'Xcode' 카테고리의 다른 글
SwiftGen사용하기 (0) | 2022.07.25 |
---|---|
Xcode 단축키 (0) | 2021.12.09 |