본문 바로가기

프로그래밍/Swift

[Xcode] Build Configuration 및 Flag 추가하기(#if DEBUG 처럼..)

728x90
반응형

목록

 


#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를 사용할 수 있다.

 

반응형