본문 바로가기

Unreal Engine

Where are UE_BUILD macros defined in UnrealEngine

아래 내용은 UnrealEngine5.3 환경에서 작성되었습니다.

언리얼 엔진을 사용할 때 빌드 환경을 기준으로 코드의 분기를 정하는 경우가 자주 있다.

이 때 활용되는 매크로는 

  • UE_BUILD_DEBUG
  • UE_BUILD_DEVELOPMENT
  • UE_BUILD_TEST
  • UE_BUILD_SHIPPING

등이 있는데, 에디터 프로젝트에서는 이 매크로에 대한 define 코드가 없는 것을 볼 수 있다.

물론 Core 모듈에 있는 Build.h 를 보면 아래 코드는 존재하지만 어디까지나 정의되지 않은 경우에 해당한다.

Core 모듈의 Build.h 에서 #ifndef 일 때 정의되는 부분

이렇듯이 이 매크로의 정의가 내부에서 이뤄지지 않는 것을 알 수 있다.

앞선 포스팅에서 언급했던 것과 같이, 언리얼은 솔루션 내의 코드만으로 빌드되는 것이 아니라 이 코드들을 기반으로 UnrealBuildTool 이 중간파일들을 생성하고 이러한 중간파일들을 기반으로 프로그램을 빌드하게 된다.

( 포스팅 참고 : https://silverwinter.tistory.com/67 )

따라서 빌드 환경에 대한 매크로 역시 UnrealBuildTool 에서 설정하는 것을 볼 수 있다.

UnrealBuildTool 에서 매크로 관련 내용 설정 부분


이렇게 설정된 내용은 UnrealBuildTool 에 의해 생성된 중간파일에 기록되며 이를 기반으로 빌드가 이뤄지는 것을 알 수 있다.

생성되는 중간 파일 위치 (Debug Editor 의 Core 모듈인 경우)
Core 모듈의 중간 파일 중 Definitions.h 에 UE_BUILD_DEBUG 매크로가 정의된 모습


댓글은 큰 힘이 됩니다. 감사합니다.