언리얼 C++ 프로그래밍

[언리얼 C++] UnrealBuildTool (UBT)

언린이 2021. 8. 30. 09:42

UnrealBuildTool(UBT)은 다양한 빌드 구성에 걸쳐 언리얼 엔진 4 소스 코드를 빌드하는 프로세스를 관리하는 커스텀 도구입니다.

사용자가 구성 가능한 다양한 빌드 옵션을 살펴 보려면 BuildConfiguration.cs 파일을 읽어보시길 바랍니다.

 

 

1. 모듈식 아키텍처

언리얼 엔진 4는 여러 모듈로 나뉩니다. 각 모듈에는 모듈 종속성, 추가 라이브러리, 포함 경로 등을 정의하는 옵션을 포함하여 빌드 방법을 제어하는 .build.cs 파일이 있습니다. 기본적으로 이러한 모듈은 DLL로 컴파일되고 단일 실행 파일에 의해 로드됩니다. BuildConfiguration.cs 파일에서 모놀리식 실행 파일을 빌드하도록 선택할 수 있습니다.

 

빌드 프로세스는 .sln 또는 .vcproj 파일(Visual Studio용)과 같은 개발 환경용 프로젝트 파일과 독립적으로 실행된다는 점을 이해하는 것이 중요합니다. 이러한 파일은 편집 목적으로 유용하므로 동적으로 생성할 수 있는 도구가 제공됩니다. GenerateProject.bat 파일로 이 도구를 실행할 수 있습니다.

 

 

2. UnrealBuildTool 대상

UnrealBuildTool은 여러 타겟 유형 빌드를 지원합니다.

  • 게임 - 쿠킹된 데이터를 실행해야 하는 독립 실행형 게임입니다.
  • 클라이언트 - 게임과 동일하지만 서버 코드를 포함하지 않습니다. 네트워크 게임에 유용합니다.
  • 서버 - 게임과 동일하지만 클라이언트 코드는 포함하지 않습니다. 네트워크 게임의 전용 서버에 유용합니다.
  • 에디터 - 언리얼 에디터를 확장하는 타겟입니다.
  • 프로그램 - 언리얼 엔진 위에 구축된 독립 실행형 유틸리티 프로그램입니다.

 

대상은 확장자가 .target.cs인 C# 소스 파일을 통해 선언되며 프로젝트의 Source 디렉터리에 저장됩니다.

각 .target.cs 파일은 TargetRules 기본 클래스에서 파생된 클래스를 선언하고 해당 생성자에서 빌드 방법을 제어하는 속성을 설정합니다. 타겟을 빌드하라는 요청을 받으면 UnrealBuildTool은 .target.cs 파일을 컴파일하고 그 안에 클래스를 구성하여 설정을 결정합니다.

 

클래스 이름은 'Target'이 뒤에 오는 선언된 파일 이름과 일치해야 합니다.

예를 들어, MyProject.target.cs는 'MyProjectTarget' 클래스를 정의합니다.

 

대상 파일의 일반적인 구조는 아래와 같습니다.

using UnrealBuildTool;
using System.Collections.Generic;
public class MyProjectTarget : TargetRules
{
    public MyProjectTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;
        // Other properties go here
    }
}

 

더 많은 타겟 속성을 알고싶으시면 Targets | Unreal Engine Documentation 글을 참고하시기 바랍니다.