Xcode

`ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` 에러 해결하기 (With. CocoaPods)

GREEN.1229 2022. 7. 7. 08:23

안녕하세요. 그린입니다🟢

이번 포스팅에서는 코코아팟으로 라이브러리 관리 및 인스톨 시 발생할 수 있는 에러에 대해 해결해보겠습니다.

 

에러 발생⚠️

에러는 아래 스텝처럼 발생하게 됩니다.

모듈화를 하는 과정에서 여러 모듈이 있게 될텐데요.

거기서 메인 모듈이 다른 모듈을 아래와 같이 가지고 있게 된다고 해봅시다.

그랬을때 해당 메인 모듈과 다른 모듈들에서도 겹치는 라이브러리 임포트가 있을거에요.

그렇게 모듈화를 끝내고, 해당 모듈들을 pod init 파일에서 각각 타겟으로 지정해줍니다.

그럼 pod install 시에 사실상 각 모듈들안에 속한 코코아팟 라이브러리들을 설치하게 됩니다.

이때 아래와 같은 문제가 발생할 수 있습니다. 

보시면 팟 설치는 모두 다 정상적으로 되었고 에러라고 보기에는 적절하지 않을 수 있긴하지만 워닝이 뜹니다.

잘보면 메인 모듈에서 코코아팟 인스톨 과정에서 `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES` 빌드 세팅 정의에서 워닝을 뱉네요.

이걸 워닝 메시지가 시키는것처럼 해결해보죠!

 

에러 해결하기🛠

보시면 메인 모듈에서 스위프트 기본 라이브러리를 항상 임베디드 할것인지에 대한 빌드 설정 부분을 건드려줘야할것 같아요.

또한 워닝 메시지에도 나와있지만 $(inherited) 플래그를 사용하거나 타겟으로부터 빌드 셋팅을 제거해버리라고 하네요!

빌드 셋팅을 제거해버릴 수는 없으니 플래그를 추가해보도록 할께요!

이와 같이 메인 모듈 타겟으로 갑니다.

그 다음 Build Settings > Build Options > Always Embed Swift Standard Libraried로 가요!

해당 값을 아까 위에서 말한 $(inherited) 플래그를 추가해줘요.

그 다음 클린 빌드하고 다시 pod install을 해보시죠!

더 이상 해당 워닝을 뱉지 않습니다!!

아마도 해당 설정을 상속하게끔 바꿔줌으로 해결하는것 같아요.

해당 이슈가 Swift3에서부터 발생했다고 합니다. 

역사가 깊네요.

 

마무리

모듈화 및 Tuist를 적용하는 과정에서 예기치 못한 워닝을 만나 해결하는 과정이 재밌었어요!

덕분에 빌드 설정 단을 조금 더 관심있게 지켜본것 같아요ㅎㅎ

 

[참고자료]

https://stackoverflow.com/questions/40599454/use-the-inherited-flag-or-remove-the-build-settings-from-the-target-c

 

- Use the `$(inherited)` flag, or - Remove the build settings from the target. CocoaPod Swift3 pod update error

I've been running into a couple of strange errors in terminal when updating cocoapods after updating a Switf2 project to Swift3. Here are the errors: [!] The `MyShowGuide [Debug]` target overrides...

stackoverflow.com