Search
Duplicate
🛠️

Xcode에서 Build Setting 제대로 관리하기

Created
2020/05/17
Tags
Programming
Xcode
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”된 빌드셋팅 값들만을 모아서 볼 수 있습니다.
또한 “All” 옵션으로 보더라도, 기본값이 아닌 값들은 굵게 표시되므로 더 눈여겨 볼 수 있습니다.

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

여러가지 이유로, 같은 프로젝트 안에서도 개발용 타겟과 배포용 타겟을 별도로 관리하는 경우가 많습니다. 이런 경우에 각각의 Target별로 빌드셋팅을 바꿀 수 있습니다. 하지만 가급적 Target의 빌드설정을 수정하는 것은 지양하라고 말씀드리고 싶어요. 왜냐하면 두 Target의 빌드설정은 달라야 하는 경우 보다는 같아야 하는 경우가 더 많기 때문이죠.
예를 들어서, 개발을 진행하던 중에 어떤 문제가 있어서 개발용 타겟의 빌드셋팅을 바꾸었다고 합시다. 그 변경으로 문제가 해결되어서 나머지 개발을 진행하고 배포 할 때가 되었습니다. 그런데 배포용 타겟의 빌드셋팅에도 같은 변경을 적용하는 것을 깜빡했을 수 있습니다. 그럴 경우 배포시점이 다가와서 갑자기 알 수 없는 이유로 앱이 크래시 된다던지 하는 당황 스러운 상황이 발생 할 수도 있습니다.
따라서 Build Setting을 바꿀 때에는, 언제나 “이것이 프로젝트 전체에 걸쳐 적용되어야 하는 변경인지, 이 타겟에 대해서만 적용되어야 하는 변경인지”를 꼭 염두에 두어야 합니다.

3. Level 단위로 Build Setting보기

Build Setting 화면의 좌측 상단에는, “Level”이라는 옵션이 있습니다. 이 옵션으로 Build Setting을 보면, 현재 적용되어 있는 Build Setting이 어느 차원에서 정의되었는지(기본값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, 타겟별로 override를 한 것인지, xcconfig에서 정의된 값을 쓰는지) 등을 볼 수 있습니다.
“나는 분명히 이 Build Setting을 수정한 것 같은데 이 수정이 반영되지 않았다”는 생각이 든다면, 이 옵션으로 Build Setting을 관찰해 보세요. 또한 이 옵션이 켜진 상태에서, 관심있는 값을 선택한 후, Tab키를 누르면, 한 Level 더 높은 곳의 필드를 수정 할 수 있습니다.

4. 각 Build Settinig의 의미 파악하기

Build Setting의 값은 너무나도 많고, 각각의 값들의 의미를 파악하기란 매우 어려운 일입니다. 어떤 값들은 변수명이 직관적이어서 바로 이해 될 수도 있지만 그렇지 않은 값들도 얼마든지 있지요.
그럴 때는 그런 값을 선택 한 후 Xcode의 우측 패널을 열어서 Quick Help 를 열어보세요. 각 값들에 대한 보다 상세한 설명과, 각 값을 바꿨을 때 어떤 변화가 있을지에 대한 정보를 얻을 수 있습니다.

불필요한 Build Setting 변경을 최소화 합시다.

Build Setting을 변경해야 하는 경우는 많습니다. 하지만 종종 우리는 각 Build Setting의 의미를 정확히 이해하지 못하고 StackOverflow의 답변에 따라 무심코 Build Setting을 바꾸기도 합니다. 또는 물려받은 Legacy프로젝트에 내가 인지하지 못했던 Build Setting 변경이 남아있을 수도 있지요.
때로는 시간을 내서 내 프로젝트가 불필요하게 Override하고 있는 Build Setting들은 없는지, 또 Override하는 Build Setting들은 왜 Override하게 되었는지를 명확히 할 필요가 있겠습니다.
또, xcconfig 파일등을 활용해 중요한 빌드셋팅을 별도의 문서로 관리하는 것도 좋은 방법이겠습니다.

참고문헌