Clover
article thumbnail

개요

분리된 여러 프로젝트에서 사용하는 공통 코드들을 SPM(Swift Package Manager)으로 모듈화를 해서 관리하는 중이다.

특정 API를 호출하는 서비스 레이어나 유틸리티성 코드들은 한번 분리를 해놓으니 확실히 유지보수 하기 편하다.

 

- SPM 생성에 참고한 블로그 : https://0urtrees.tistory.com/387

 

iOS Swift Package Manager, SPM 패키지 생성 및 사용방법

SPM, Swift Package Manager는 iOS의 built-in swift 코드 배포 관리 도구입니다. 비교적 지원하는 라이브러리가 적긴 하지만, cocoaPods, carthage 처럼 프로젝트에 라이브러리를 연결하거나 프로젝트 코드 모듈

0urtrees.tistory.com

 

위 블로그에 SPM 패키지 생성부터 적용하는 방법까지 잘 나와있어서 참고하였다.

그런데 내 맥에서는 SPM을 처음 생성할 때 에러가 발생했었다. 알고 보면 별건 아닌데, 해결 방법 찾는데에 시간이 꽤 걸렸었다.

 


발생한 에러

터미널로 test 라는 폴더를 만들고 swift package init 명령어를 실행하면 기본 SPM 프로젝트가 생성된다.

그다음, swift build 명령어를 입력하면 패키지 빌드가 잘 되는지 확인해 볼 수 있다.

이때, 나는 Invalid manifest 라는 에러가 발생하며 빌드에 실패했었다.

 

 


해결

swift build 명령어는 mac에 설치되어 있는 Swift 컴파일러에 의존한다.

Xcode 설치 과정에 Swift 컴파일러 설치도 포함되어 있기 때문에, 컴파일러를 직접 설치해 본 적은 없다. 그런데 이 이유 때문에 Xcode를 여러번 설치하게 되면 기본 컴파일러 버전이 꼬일 가능성이 생기게 된다.

 

나의 경우는 Xcode 15.0 버전을 한번 설치했다가, 15.0.1 RC 버전으로 업그레이드를 해서 사용 중인 상태였다.

아마도, 이 과정에서 컴파일러 선택 옵션값이 새로 설치한 버전으로 변경이 되지 않았던 것 같다. (추측)

 

그래서 다음 명령어를 입력해주었다.

$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

 

Xcode 경로는 각자 다를 수 있다.

어쨌든 내가 사용하고 있는 Xcode 설치 경로 아래의 /Contents/Developer 경로를 찾아서 지정해 주면 된다.

명령어를 입력해서 Swift 컴파일러 경로(버전)를 수정해 주었고, 다시 swift build 명령어를 입력해서 잘 되는 것을 확인했다.

 

- 출처 : https://stackoverflow.com/questions/39795455/no-such-module-packagedescription

 

No such module "PackageDescription"

I just started with swift 3 and made a simple app in xcode using Swift 3.0 . Now i want to add a third party library using Swift Package Manager . I am following installation method given in this l...

stackoverflow.com