Xcode

XcodeGen으로 프로젝트 관리하기

motosw3600 2022. 7. 25. 19:46

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파일을 추출한 뒤 프로젝트 하위에 저장한다.

 

BuildSettingExtractor

BuildSettingExtractor is a free, open-source utility that extracts build settings from an Xcode project into a set of xcconfig files.

buildsettingextractor.com

 

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