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# |