티스토리 뷰

에러 메세지


No such module '*'

 

분명 Project.swift 파일에서 dependencies에 .external로 외부 패키지 의존성을 설정해주었음에도 불구하고 모듈을 찾을 수 없다는 오류가 발생했습니다..

심지어 Xcode 상에서 빌드할 때 잠깐 떴다가 사라지는데요..

 

원인


사실 해당 오류는 Tuist 4.0 이전 버전을 썼을때도 마주쳤던 문제였습니다.

xcconfig 파일 분리를 위해 아래와같이 settings를 구성했습니다.

public static func settings() -> Settings {
    return .settings(
        configurations: [
            .debug(name: "dev"),
            .release(name: "prod")
        ],
        defaultSettings: .recommended
    )
}

 

그럼 위 설정을 추가한 프로젝트 내에서는 Configurations가 Debug, Release -> dev, prod로 바뀌게 됩니다.

 

그러나 Dependencies에 정의한 외부 패키지 framework같은 경우는 그대로 Debug, Release로 생성되게 되면서 문제가 발생합니다.

 

DerivedData 폴더에서 빌드된 구조를 보면 configuration에 따라 각각 다른 폴더에 모듈과 외부 의존성이 빌드되고 있는걸 확인할 수 있습니다.

그러므로 빌드할때 외부 의존성 link에 실패하게 되는 것이죠.

 

 

Tuist 4.0 이전 버전 해결법


4.0 이전 버전을 사용하고 있다면 다른 모듈들 Settings에 맞추어 Dependencies.swift 파일에 baseSettings 부분을 추가해주면 됩니다.

// Dependencies.swift

let spm = SwiftPackageManagerDependencies(
    [
 		// ...
    ],
    baseSettings: .settings(configurations: [ ✅
        .debug(name: "dev"),
        .release(name: "prod")
    ])
)

 

Tuist 4.0 이후 버전 해결법


4.0 이후 Dependencies.swift 파일이 deprecated되면서 Pakage.swift 파일을 사용하는 것으로 대체가 되었습니다.

따라서 Pakage.swift 파일 내에 PakageSettings에 있는 baseSettings 인자에 다른 모듈들과 동일한 configuration을 설정해주면 됩니다.

// Pakage.swift

#if TUIST
import ProjectDescription

let packageSettings = PackageSettings(
    baseSettings: .settings(  ✅
        configurations: [
            .debug(name: "dev"),
            .release(name: "prod")
        ]                  
   ),
    productTypes: [
		// ...
    ]
)
#endif
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함