UE5

[UE5] .uproject, Target.cs, Build.cs

검정색필통 2025. 1. 13. 13:28

uproject 파일이란?

  • uproject 파일은 Unreal Engine 프로젝트의 설정과 메타데이터를 담고 있는 JSON 형식의 파일
  • Unreal Engine 프로젝트의 시작점이자 프로젝트의 모든 구성 요소를 관리하는 중심 역할
  • Unreal Editor에서 프로젝트를 열거나, 빌드 도구(UnrealBuildTool)를 통해 게임을 빌드할 때 uproject 파일을 기준으로 프로젝트 설정을 불러옴
{
    "FileVersion": 3,
    "EngineAssociation": "5.1",
    "Category": "Games",
    "Description": "My Unreal Engine Game",
    "Modules": [
        {
            "Name": "MyGame",
            "Type": "Runtime",
            "LoadingPhase": "Default"
        }
    ],
    "Plugins": [
        {
            "Name": "MyCustomPlugin",
            "Enabled": true
        }
    ]
}

 

설명
FileVersion uproject 파일의 버전
EngineAssociation 이 프로젝트가 사용하는 Unreal Engine 버전
Category 프로젝트의 카테고리 (Games, Plugins, Engine 등)
Description 프로젝트에 대한 설명
Modules 프로젝트에 포함된 코드 모듈 목록
Plugins 프로젝트에서 사용되는 플러그인 목록

 

uproject 파일의 역할

역할 설명
프로젝트 메타데이터 관리 프로젝트 이름, 설명, 버전 등을 저장
Unreal Engine 버전 연결 프로젝트가 어떤 엔진 버전과 연관되는지 설정
모듈 및 플러그인 관리 프로젝트에서 사용하는 모듈 및 플러그인 관리
에디터에서 프로젝트 열기 에디터에서 프로젝트를 열 때 참조하는 파일
빌드 시스템과 통합 UnrealBuildTool에서 이 파일을 참조하여 빌드

 

 

Target.cs 파일이란?

  • Unreal Engine 빌드 타겟을 정의하는 곳
  • 빌드 타겟은 게임이 어떤 플랫폼에서 어떤 용도로 빌드되는지를 지정
  • 예를 들어, Window 용인지, 에디터에서 실행할지, 서버용으로 빌드할지를 설정
using UnrealBuildTool;
using System.Collections.Generic;

public class MyGameTarget : TargetRules
{
    public MyGameTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;  // 게임 타겟
        DefaultBuildSettings = BuildSettingsVersion.V2;
        ExtraModuleNames.AddRange(new string[] { "MyGame" });
    }
}

 

속성 설명
Type 빌드 타겟의 종류 (Game, Editor, Server 등)
ExtraModuleNames 이 타겟이 포함할 모듈 이름
DefaultBuildSettings 빌드 설정 버전 (V1, V2)

 

  • Type에는 Game, Editor, Server, Client 가 있다.
설명
Game 최종 사용자용 게임 빌드
Editor Unreal Editor에서 사용되는 빌드
Server 전용 서버 빌드
Client 클라이언트 전용 빌드

 

 

Build.cs 파일이란?

  • Build.cs 파일은 각 모듈의 빌드 설정을 정의
  • 게임 프로젝트는 여러 모듈로 구성되며, 각 모듈이 어떤 의존성을 가지는지, 어떤 서드파티 라이브러리를 사용하는지 설정
  •  
using UnrealBuildTool;

public class MyGame : ModuleRules
{
    public MyGame(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] {
            "Core",
            "CoreUObject",
            "Engine",
            "InputCore"
        });

        PrivateDependencyModuleNames.AddRange(new string[] { });

        // 서드파티 라이브러리 추가 예시
        // AddThirdPartyPrivateStaticDependencies(Target, "MyLibrary");
    }
}
속성 설명
PublicDependencyModuleNames 이 모듈이 공유하는 모듈 의존성 목록
PrivateDependencyModuleNames 이 모듈이 내부적으로 사용하는 모듈 의존성 목록
PCHUsage 프리컴파일 헤더(PCH) 사용 방법

 

 

.uproject vs Target.cs vs Build.cs

파일 역할 파일 형식
.uproject 프로젝트 설정 및 메타데이터 관리 JSON
Target.cs 프로젝트의 빌드 타겟 설정 (플랫폼, 용도) C#
Build.cs 모듈의 빌드 설정 (의존성, PCH 설정 등) C#