cleanUrl: /programming/know-your-xcode-build-setting

Build Setting은 아주 중요하고 민감한 값입니다. 이 값들을 어떻게 설정하느냐에 따라 생산성에 큰 차이가 생길 수도 있고, 심지어는 알 수 없는 런타임 오류가 발생 할 수도 있습니다.

따라서 프로젝트에서 Build Setting을 변경 할 때에는, 그럴만한 충분한 이유가 있어야 하고, 그 이유와 맥락이 팀 전체에 공유가 잘 되어야 합니다.

문제는 이 Build Setting을 저장하고 있는 파일이 project.pbxproj 파일이라는 점입니다. 파일을 추가하거나 위치를 이동시키기만 해도 수정이 발생하는 바로 그 pbxproj파일 말이지요. 이 pbxproj 파일은 너무나 보기 불편합니다. 오죽하면 Pro Git Book 에서도 pbxproj파일은 코드리뷰의 대상으로 보지 말고 binary로 보는 것이 낫다고 얘기하겠습니까.

이러니 딜레마 상황이 생깁니다. Build Setting은 아주 중요한 정보이니만큼, 변화가 생겼을 때 그 변화의 적절성이 코드리뷰 단계에서 꼼꼼하게 심사되어야 하는데, 코드리뷰 단계에서 이 변경을 눈치채기가 아주 어렵습니다.

다른 여러 도구들의 도움을 얻어야 할 부분도 있겠습니다만, 일단은 Xcode에서 제공해주는 여러 도구들을 십분 활용 할 수 있어야 문제 상황에 대처하기가 쉬워질 것입니다.

1. 수정된 Build Settng 값들만 모아보기

잘못된 Build Setting으로 인해 문제가 발생했다고 생각된다면, 먼저 “기본값이 아닌” 값을 쓰고 있는 Build Setting들을 살펴봐야 합니다. Xcode에서는 좌측 상단의 필터 옵션에서 “Customized”된 빌드셋팅 값들만을 모아서 볼 수 있습니다.

Screen-Shot-2020-05-17-at-23.26.07-1536x413.png

또한 “All” 옵션으로 보더라도, 기본값이 아닌 값들은 굵게 표시되므로 더 눈여겨 볼 수 있습니다.

Screen-Shot-2020-05-17-at-23.27.54-1536x413.png

2. Target Build Setting보다는 Project Build Setting을 이용하기

여러가지 이유로, 같은 프로젝트 안에서도 개발용 타겟과 배포용 타겟을 별도로 관리하는 경우가 많습니다. 이런 경우에 각각의 Target별로 빌드셋팅을 바꿀 수 있습니다. 하지만 가급적 Target의 빌드설정을 수정하는 것은 지양하라고 말씀드리고 싶어요. 왜냐하면 두 Target의 빌드설정은 달라야 하는 경우 보다는 같아야 하는 경우가 더 많기 때문이죠.

예를 들어서, 개발을 진행하던 중에 어떤 문제가 있어서 개발용 타겟의 빌드셋팅을 바꾸었다고 합시다. 그 변경으로 문제가 해결되어서 나머지 개발을 진행하고 배포 할 때가 되었습니다. 그런데 배포용 타겟의 빌드셋팅에도 같은 변경을 적용하는 것을 깜빡했을 수 있습니다. 그럴 경우 배포시점이 다가와서 갑자기 알 수 없는 이유로 앱이 크래시 된다던지 하는 당황 스러운 상황이 발생 할 수도 있습니다.

따라서 Build Setting을 바꿀 때에는, 언제나 “이것이 프로젝트 전체에 걸쳐 적용되어야 하는 변경인지, 이 타겟에 대해서만 적용되어야 하는 변경인지”를 꼭 염두에 두어야 합니다.

Screen-Shot-2020-05-17-at-23.30.23-2048x550.png

3. Level 단위로 Build Setting보기

Build Setting 화면의 좌측 상단에는, “Level”이라는 옵션이 있습니다. 이 옵션으로 Build Setting을 보면, 현재 적용되어 있는 Build Setting이 어느 차원에서 정의되었는지(기본값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, 타겟별로 override를 한 것인지, xcconfig에서 정의된 값을 쓰는지) 등을 볼 수 있습니다.