본문 바로가기
PROGRAMMING CODE/SWIFT

[Xcode] Tuist 적용 연습

by daye_ 2023. 11. 24.

 

 

 

 

1. 설치

> curl -Ls https://install.tuist.io | bash

 

 

성공화면

 

 

 

2. 프로젝트 생성, 실행

> mkdir TuistTest 
> cd TuistTest
> tuist init --platform ios //UIkit
//tuist init --platform ios --template swiftui // SwiftUI

 

 

성공화면

 

잘 된것!

 

 

 

3. manifast 설정

> tuist edit

 

 

해줬는데 오류뜸 ㅜ

Couldn't find Xcode's Info.plist at /Library/Contents/Info.plist. Make sure your Xcode installation is selected by running: sudo xcode-select -s /Applications/Xcode.app
Consider creating an issue using the following link: https://github.com/tuist/tuist/issues/new/choose

 

sudo xcode-select -s /Applications/Xcode.app 을 입력해보라고 한다.

 

유저-MacBookPro TuistTest % sudo xcode-select -s /Applications/Xcode.app
xcode-select: error: invalid developer directory '/Applications/Xcode.app'

시키는대로 해줬더니 디렉토리에서 Xcode.app을 찾을 수 없다는것 ㅎ,,

근데 진짜 경로 틀렸던거였음 ㅋㅋㅎ...ㅎ.....

 

 

 

xcode-select active developer directory error

Saw the following error when running an npm install which required node-gyp... but could be triggered by anything which requires xcode-select. xcode-select: error: tool 'xcodebuild' requires Xco...

stackoverflow.com

 

 

다시 tuist edit 해주니까

Manifests- Project파일 뜸! 그래서 아래와 같이 설정

이름, 번들아이디 찾아서 잘 맞춰줘야함 !

ctrl + c 해서 저장해준 후

 

 

4. 프로젝트 패치, 생성

 > tuist fetch
 > tuist generate
 // tuist generate --project-only 프로젝트 파일만 생성

 

했는데 아래와 같은 오류 뜬다면 타겟 설정 어딘가 잘못된것,, 패스, 번들아이디, 이름 등등 확인하기

The target TuistTest has the following invalid source files globs:

 

 

성공화면

 

 

 

 

 

 

4. 의존성 추가해보기

> mkdir MyPackage
> cd MyPackage 
> swift package init 
> swift build 
> swift test

깃허브 올려두고 url쓰는 분이 더 많긴 했지만, 일단 로컬파일로 테스트 해봄!

 

import ProjectDescription

let target = Target(
    name: "TuistTest",
    platform: .iOS,
    product: .app,
    bundleId: "io.tuist.TuistTest",
    infoPlist: .default,
    sources: ["Targets/TuistTest/Sources/**"],
    resources: ["Targets/TuistTest/Resources/**"],
    dependencies: [
        .package(product: "MyPackage"),
    ]
)

let project = Project(
    name: "TuistTest",
    organizationName: nil,
    options: .options(),
    packages: [
        .package(path: "MyPackage")
    ],
    settings: nil,
    targets: [target],
    schemes: [],
    fileHeaderTemplate: nil,
    additionalFiles: [],
    resourceSynthesizers: []
)

 

 

 

 

이렇게 해준 후 class 내부에서 MyPackage를 import하면 사용할 슈 있다고 한다!

 

 

빌드 되는거 까지 확인했으니까 되는거겠지..? ㅎ,ㅎ.ㅎ.ㅎ..ㅎ....?