목록
#if DEBUG 말고 다른 flag가 필요하다면?
Xcode에 기본적으로 DEBUG와 RELEASE라는 Build Configuration이 세팅되어 있다. 보통 DEBUG는 디버그 빌드용으로, RELEASE는 출시용으로 나누어서 구분하여 관리한다. 내가 관리하는 앱 같은 경우 DEBUG와 RELEASE에 따라 API 주소를 변경해줘야 하기 때문에 아래와 같이 사용한다.
#if DEBUG
var requestURL = "https://dev-...." // development API 주소
#else
var requestURL = "https://prod-...." // production API 주소
#endif
그런데 API 서버에서도 출시 전 pre-production이라는 API주소로 테스트가 필요하다고 한다. 그래서 DEBUG, RELEASE 말고 PREPROD라는 Build Configuration를 추가해줘야 한다. 어떻게 해야 할까?
#if DEBUG
var requestURL = "https://dev-...." // development API 주소
#elseif PREPROD
var requestURL = "https://preprod-...." // 새로 추가된 pre production API 주소
#else
var requestURL = "https://prod-...." // production API 주소
#endif
Build Configuration 추가하기
Xcode -> Project -> Info -> Configurations -> '+' 버튼 클릭
Debug나 Release 둘 중 복제할 것을 선택하고 원하는 이름으로 입력한다.
Build Settings -> Custom Flags 검색
Active Compilation Conditions에 보면 새로 추가된 'Test'를 확인할 수 있다. 그리고 타깃의 Schem에 보면 'Test'로 설정할 수도 있다. 타깃을 새로 추가한 뒤 해당 Build Configuration을 설정하여 빌드할 수 있다.
근데 이렇게 추가해도 #if Test는 적용되지 않는다. 해당 Build Configuration에 맞는 flag까지 설정해줘야 한다.
Custom Flags 추가하기
새로 추가한 'Test'의 값이 DEBUG로 되어 있다. Build Configuration를 추가할 때 Debug를 복제했기 때문이다. 따라서 이 값을 원하는 값으로 바꿔주어야 #if <Value>의 구문을 사용할 수 있다.
만약 Build Configuration를 추가하지 않고 단지 flag만 추가하고 싶은 경우 Other Swift Flags에 추가해주면 된다.
이렇게 설정하면 Release에서 #if TEST를 사용할 수 있다.
'프로그래밍 > Swift' 카테고리의 다른 글
[Swift] @frozen은 무슨 의미일까? (0) | 2021.12.28 |
---|---|
[iOS] MVC와 MVVM에 대한 생각 (0) | 2021.11.25 |
[swift] 클래스 (0) | 2021.07.05 |
[swift] 함수와 클로저 (0) | 2021.06.07 |
[Xcode 12] 인텔 맥북과 M1 맥북의 Architecture 차이점(x86_64와 Arm64) (0) | 2021.06.04 |