EEYatHo 앱 깎는 이야기

Swift ) Xcode Build Setting의 inherited - EEYatHo iOS 본문

iOS, Swift

Swift ) Xcode Build Setting의 inherited - EEYatHo iOS

EEYatHo 2021. 4. 26. 14:10
반응형

XcodeGen을 사용해보려다가 Xcode 빌드 설정에 대해 파헤치게 되었습니다.

 

수많은 걸림돌 중에 하나가 바로 이 오류메세지였습니다.

The '타겟이름' target overrides the '옵션이름' build setting defined in '설정파일이름'. This can lead to problems with the CocoaPods installation.

 

후.. 배경설명부터 들어갑니다.


Xcode에서 설정값을 정할 때는,

타겟의 설정값 > 설정파일의 설정값 > 프로젝트의 설정값 > 기본값순으로(왼쪽일수록 높은 우선순위) 정해집니다.

 

아래 사진과함께 설명하자면,

 

Xcode의 Build Settings에서 Levels를 눌러보시면 이런 화면을 보실 수 있는데,

 

타겟이름 column은 타겟의 설정값,

Config File (설정파일이름) column은 설정파일의 설정값,

프로젝트이름 column은 프로젝트의 설정값,

iOS Default column은 기본값을 뜻합니다.

 

이 4개의 설정값 중에, 결정된 값 (제일 왼쪽의 값)은 초록색으로 표시해주며

Resolved column 최종 결정된 값으로 나옵니다.


그렇다면 이 사진에서 말하는 inherited가 대체 무엇이냐?

 

inherited의 뜻인 "상속된"처럼, 나보다 한단계 낮은 우선순위의 값을 상속받겠다는 뜻입니다.

 

만약 타겟이름 column에 inherited를 세팅하면, Config File (설정파일이름) column의 설정값을 따르게되는 것입니다.

 

 

Pod에서는 Config File을 이용하여, 빌드 설정을 세팅합니다.

문제는 Pod에서 설정한 것보다, 개발자가 타겟에 직접(xcodegen 을 이용한다던지..) 설정을 세팅한 것이 우선순위가 높다는 것입니다.

때문에 Pod은 인위적으로 건들지말라고 경고를 띄우는 것이죠.

 

 

따라서 저 경고문구가 나온다면,

 

경고문구에서 보여주는 세팅값에 가서, 인위적으로 세팅한 값(타겟column)과, Pod에서 세팅한 값(Config File column)을 비교하여,

 

Pod에서 세팅한 값으로 해도 상관없다고 판단되면 인위적 세팅값을 지우고,

인위적 세팅값이 꼭 필요한 것이라면, 그 세팅값에서 Pod이 잘 돌아가는지 판단해야합니다.

 

Comments