ios - Swift 5.1로 컴파일 된 모듈은 Swift 5.1.2 컴파일러에서 가져올 수 없습니다




xcode swift5.1 (2)

Xcode 11.0을 사용하여 전통적인 RxSwift.framework 스타일 패키지로 컴파일 한 프레임 워크 (이 경우 RxSwift)가 있습니다.

이것은 Xcode 11.0으로 가져 왔으며 11.1에도 아무런 문제가 없었습니다.

오늘 Apple의 Xcode 11.2 릴리스에 따라 업그레이드하여 오류가 표시되었습니다.

Swift 5.1로 컴파일 된 모듈은 Swift 5.1.2 컴파일러에서 가져올 수 없습니다

컴파일러 불일치를 신속하게 처리하는 데 익숙했으며 Xcode 11.2를 사용하여 RxSwift를 다시 컴파일하고 계속 수행 할 수는 있지만 Swift 5.1의 헤드 라인 기능은 모듈 안정성 이었습니다.

모듈 안정성이 확보되었으므로 프레임 워크가 모든 새로운 Xcode 릴리스마다 계속 다시 컴파일 될 필요는 없지만 인상적이지는 않습니다.

누구든지 여기서 무슨 일이 일어나고 있는지 설명 할 수 있다면 대단히 감사하겠습니다. Xcode 11.2에 버그가 있습니까? 또는 원래 Xcode 11.0으로 컴파일 할 때 모듈 안정성을 원한다고 말했습니까?


OK, WWDC 비디오를 시청하면 다음과 같이 설명합니다. https://developer.apple.com/videos/play/wwdc2019/416/

프레임 워크의 빌드 설정에서 배포 용 빌드 라이브러리 옵션을 .swiftinterface 설정해야합니다. 그렇지 않으면 빠른 컴파일러는 이전 라이브러리를로드 할 수있는 미래 컴파일러의 핵심 인 .swiftinterface 파일을 생성하지 않습니다.

이것은 project.pbxproj 파일에서 다음과 같이 끝납니다.

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

이 플래그를 설정 한 후 Xcode 11.0 (swift 5.1)을 사용하여 컴파일 한 프레임 워크를 Xcode 11.2 (swift 5.1.2)로 컴파일 할 수 있었고 모든 것이 올바르게 작동하는 것으로 보입니다.

이 질문 / 답변이 모든 WWDC 비디오를 보지 않은 모든 사람에게 유용한 참고 자료가되기를 바랍니다.


같은 문제가 발생하기 시작했고 잘못된 xcode 명령 줄 도구를 사용하고 있음을 알게되었습니다. 환경 설정> 위치로 이동하여 명령 행 도구를 Xcode 11.1에서 11.2.1로 변경했습니다. 안전을 위해 파생 데이터 디렉토리를 지우고 carthage build 실행했습니다.





swift5.1