iOS 앱 개발에서 Xcode 프로젝트 파일은 필수적입니다. 그러나 프로젝트가 커질수록 .xcodeproj 파일의 관리가 점점 더 어려워지기 마련입니다. 버전 관리 시스템에서 merge conflict가 발생하거나, 다른 팀원과의 협업에서 혼란을 초래할 수 있습니다. 이러한 문제를 해결하고자 등장한 도구가 바로 XcodeGen입니다. XcodeGen은 Swift로 작성된 커맨드 라인 도구로, YAML 또는 JSON 형태의 프로젝트 명세를 사용하여 Xcode 프로젝트를 자동으로 생성합니다. 이번 포스트에서는 XcodeGen의 주요 기능과 설치 방법, 기본 사용법을 살펴보겠습니다.

XcodeGen의 주요 기능과 특징

XcodeGen은 다음과 같은 여러 가지 강력한 기능을 제공합니다:

  • 프로젝트 생성 자동화: XcodeGen을 사용하면 프로젝트를 손쉽게 생성하고 .xcodeproj 파일을 Git에서 제거하여 merge conflict를 방지할 수 있습니다.
  • 디렉토리 구조와의 동기화: Xcode 내의 그룹과 파일은 디스크의 디렉토리 구조와 항상 동기화됩니다.
  • 사람이 읽기 쉬운 구성: YAML 또는 JSON 파일로 설정을 정의함으로써, 프로젝트 설정이 더욱 직관적이고 Git 친화적입니다.
  • 빌드 설정 공유: 여러 타겟에 걸쳐 빌드 설정을 쉽게 공유할 수 있는 기능을 제공합니다.
  • 스키마 자동 생성: 테스트 및 프로덕션 환경을 위한 스키마를 자동으로 생성합니다.
  • CI 통합 가능: CI 환경에서도 손쉽게 프로젝트를 생성할 수 있습니다.
  • 멀티 플랫폼 지원: 다양한 플랫폼용 프레임워크를 쉽게 생성할 수 있습니다.

이처럼 XcodeGen은 복잡한 프로젝트 설정을 간편하게 처리할 수 있도록 도와줍니다.

설치 방법

XcodeGen을 설치하는 방법은 여러 가지가 있습니다. 다음의 방법 중 하나를 선택하여 설치할 수 있습니다.

1. Mint 사용하기

mint install yonaskolb/xcodegen

2. Make 사용하기

git clone https://github.com/yonaskolb/XcodeGen.git
cd XcodeGen
make install

3. Homebrew 사용하기

brew install xcodegen

4. Swift Package Manager 사용하기

CLI로 사용하고자 할 경우:

git clone https://github.com/yonaskolb/XcodeGen.git
cd XcodeGen
swift run xcodegen

의존성으로 추가할 경우 Package.swift 파일의 dependencies에 다음을 추가합니다:

.package(url: "https://github.com/yonaskolb/XcodeGen.git", from: "2.0.0")

기본 사용법

XcodeGen을 설치한 후, 다음 단계로 기본 사용법을 살펴보겠습니다. 아래 YAML 예제를 사용하여 Xcode 프로젝트를 생성해보겠습니다.

name: MyProject
include:
  - base_spec.yml
options:
  bundleIdPrefix: com.myapp
packages:
  Yams:
    url: https://github.com/jpsim/Yams
    from: 2.0.0
targets:
  MyApp:
    type: application
    platform: iOS
    deploymentTarget: "10.0"
    sources: [MyApp]
    settings:
      configs:
        debug:
          CUSTOM_BUILD_SETTING: my_debug_value
        release:
          CUSTOM_BUILD_SETTING: my_release_value
    dependencies:
      - target: MyFramework
      - carthage: Alamofire
      - framework: Vendor/MyFramework.framework
      - sdk: Contacts.framework
      - sdk: libc++.tbd
      - package: Yams
  MyFramework:
    type: framework
    platform: iOS
    sources: [MyFramework]

위의 명세 파일을 project.yml이라는 이름으로 저장한 후, 아래 명령어를 실행하여 Xcode 프로젝트를 생성합니다.

xcodegen generate

이 명령어를 실행하면, 지정된 구조와 설정에 따라 Xcode 프로젝트가 생성됩니다.

실제 활용 시나리오

XcodeGen은 특히 팀 프로젝트에서 유용하게 사용될 수 있습니다. 예를 들어, 여러 개발자가 동시에 작업하는 대형 프로젝트에서는 각 개발자가 자신이 담당하는 부분에 대한 YAML 파일을 정의하고, 이를 통해 프로젝트를 자동으로 생성함으로써 일관성을 유지할 수 있습니다. 또한, CI/CD 파이프라인에 XcodeGen을 통합하면, 코드 변경 사항에 따라 자동으로 최신의 Xcode 프로젝트를 생성할 수 있습니다.

유사 도구와의 간단 비교

XcodeGen 외에도 Xcode 프로젝트를 생성하는 도구는 몇 가지 존재합니다. 그 중 CocoaPods나 Carthage와 같은 의존성 관리 도구는 주로 라이브러리 관리를 위한 것이며, XcodeGen은 주로 프로젝트의 구조와 설정을 관리하는 데 특화되어 있습니다. 이러한 차이점 때문에 XcodeGen은 프로젝트의 전반적인 관리와 설정을 보다 편리하게 할 수 있는 도구로 자리 잡고 있습니다.

마무리 및 추천 대상

XcodeGen은 Xcode 프로젝트 관리에서 발생하는 여러 문제를 효과적으로 해결해주는 도구입니다. 특히 팀 단위로 협업하는 개발자, CI/CD 환경에서 자동화를 추구하는 팀, 그리고 복잡한 프로젝트 구조를 간소화하고자 하는 개발자에게 추천합니다.

자세한 내용은 XcodeGen GitHub 레포지토리에서 확인하실 수 있습니다.