No errors reported

언리얼 빌드 시스템 모듈 파일

타깃 빌드 시 언리얼 빌드 시스템에서 사용하는 타깃 파일 참고서입니다.

Windows
MacOS
Linux
이 페이지의 내용:

개요

모듈은 UE4 의 기본 구성 요소입니다. 엔진은 모듈의 거대한 집합으로 구현되어 있으며, 게임마다 별도의 모듈을 제공하여 그 모듈을 강화시킵니다. 각 모듈은 일정한 함수 기능 세트를 캡슐화하고 있으며, 다른 모듈에서 사용할 수 있도록 (매크로, 인클루드 경로와 함께) 공용 인터페이스와 컴파일 환경을 제공하고 있습니다.

모듈은 C# 소스 파일에 .build.cs 확장자로 선언되며, 프로젝트의 Source 디렉터리 아래 저장됩니다. 모듈에 속하는 C++ 소스 코드는 .build.cs 파일 옆에 저장되거나, 그 안의 하위 디렉터리에 저장됩니다. 각 .build.cs 파일은 ModuleRules 베이스 클래스에서 파생되는 클래스를 선언하며, 생성자에서 어떻게 빌드할지를 제어하는 프로퍼티를 설정합니다. 이러한 .build.cs 파일은 언리얼 빌드 툴이 컴파일하여 전반적인 컴파일 환경을 구축합니다.

.build.cs 파일의 전형적인 구조는 다음과 같습니다.

using UnrealBuildTool;
using System.Collections.Generic;

public class MyModule : ModuleRules
{
    public MyModule(ReadOnlyTargetRules Target) : base(Target)
    {
        // Settings go here
    }
}

읽기/쓰기 프로퍼티

Type (ModuleType)

모듈 유형입니다.

BinariesSubFolder (String)

Binaries/PLATFORM 폴더의 하위 폴더로 DLL 빌드 시 이 모듈을 넣을 곳입니다. TargetPlatform 또는 ShaderFormat 모듈같은 검색을 통해 찾을 수 있는 모듈에서만 사용해야 합니다. 추적에 FindModules 가 사용되지 않는 경우, 모듈을 찾지 못합니다.

OptimizeCode (CodeOptimization)

이 모듈의 코드를 언제 최적화시킬지 입니다.

PrivatePCHHeaderFile (String)

이 모듈에 대한 명시적 프라이빗 PCH 입니다. 이 모듈이 공유 PCH 를 사용하지 않음을 암시합니다.

SharedPCHHeaderFile (String)

이 모듈에 제공되는 공유 PCH 에 대한 헤더 파일 이름입니다. 퍼블릭 C++ 헤더 파일에 대해 유효한 상대 경로여야 합니다. 유의미한 숫자의 다른 C++ 모듈에 인클루드된 헤더 파일에 대해서만 설정되어야 합니다.

ShortName (String)

이 모듈의 중간 파일을 위한 중간 디렉터리와 파일의 다른 이름을 지정합니다. 경로 길이 제한에 걸렸을 때 좋습니다.

PCHUsage (PCHUsageMode)

이 모듈에 대해 미리컴파일된 헤더 사용입니다.

bTreatAsEngineModule (Boolean)

이 모듈을 엔진 모듈로 취급할지 (즉 엔진 정의, PCH 사용 여부나 DebugGame 구성에 활성화된 최적화 포함 컴파일) 여부입니다. 생성에 사용된 어셈블리 규칙에 따라 기본값으로 초기화시킵니다.

bUseBackwardsCompatibleDefaults (Boolean)

이 모듈에 하위호환 기본값 사용 여부입니다. 기본적으로 엔진 모듈은 항상 최신 기본값 세팅을 사용하는 반면, 프로젝트 모듈은 (더 쉬운 이주 방식을 지원하기 위해) 기본값 세팅을 사용하지 않습니다.

bUseRTTI (Boolean)

런타임 유형 정보를 사용합니다.

bUseAVX (Boolean)

AVX 인스트럭션을 사용합니다.

bEnableBufferSecurityChecks (Boolean)

버퍼 시큐리티 체크를 켭니다. 심각한 보안 문제 방지를 위해 보통 켜는 것이 좋습니다.

bEnableExceptions (Boolean)

예외 처리를 켭니다.

bEnableObjCExceptions (Boolean)

오브젝티브 C 예외 처리를 켭니다.

bEnableShadowVariableWarnings (Boolean)

섀도우 처리된 변수에 대한 경고를 켭니다.

bEnableUndefinedIdentifierWarnings (Boolean)

#if 표현식에서 미정의 식별자에 대한 경고를 켭니다.

bFasterWithoutUnity (Boolean)

true 이고 unity 빌드가 활성화되면, 이 모듈은 unity 없이 빌드됩니다.

MinSourceFilesForUnityBuildOverride (Int32)

이 모듈의 소스 파일 수가 이 이상 되어야 해당 모듈에 대해 unity 빌드가 가동됩니다. -1 이외의 값으로 설정되면, MinGameModuleSourceFilesForUnityBuild 에 제어되는 기본값을 덮어씁니다.

MinFilesUsingPrecompiledHeaderOverride (Int32)

BuildConfiguration 을 덮어씁니다. 0 이 아닌 경우 MinFilesUsingPrecompiledHeader 입니다.

bBuildLocallyWithSNDBS (Boolean)

모듈은 #import 를 사용하므로 SN-DBS 와 컴파일 시 로컬 빌드해야 합니다.

IsRedistributableOverride (Nullable<Boolean>)

이 모듈에 대한 재배포 오버라이드 플래그입니다.

bOutputPubliclyDistributable (Boolean)

이 모듈의 출력 결과에 (CarefullyRedist, NotForLicensees, NoRedist 와 같은) 모듈상의 코드/ 디펜던시가 있다 할지라도 공개 배포 가능하도록 할지 여부입니다. 소스를 제외하고 바이너리만 배포하려는 경우에 사용해야 합니다.

WhitelistRestrictedFolders (List<String>)

이 바이너리 컴파일 시 레퍼런싱해야 하는 화이트리스트 폴더 목록으로, 제한 폴더 이름을 전파하지 않습니다.

bEnforceIWYU (Boolean)

PCHUsage 가 ExplicitOrSharedPCH 설정된 경우 "include what you use" 규칙을 사용합니다. (Engine.h, UnrealEd.h, 등...) 모노리식 헤더가 사용되면 경고가 나며, 소스 파일에 일치되는 헤더가 먼저 포함되어 있는지 검사합니다.

bAddDefaultIncludePaths (Boolean)

모듈에 기본 include 경로를 전추 추가할지 여부입니다 (예: Source/Classes 폴더, Source/Public 하위 폴더).

bPrecompile (Boolean)

이 모듈을 다시 컴파일해야할지 여부입니다. 기본값은 타깃의 bPrecompile 플래그 값입니다. 이 플래그를 지우면 모듈이 다시 컴파일되지 않습니다.

bUsePrecompiled (Boolean)

이 모듈이 미리 컴파일된 데이터를 사용할지 여부입니다. 설치된 어셈블리에서 생성된 모듈은 항상 true 입니다.

PublicIncludePathModuleNames (List<String>)

모듈의 퍼블릭 헤더가 접근해야 하지만 "임포트" 또는 링크를 걸어줄 필요는 없는 헤더 파일로 된 (경로 없이) 모듈 이름 목록입니다.

PublicDependencyModuleNames (List<String>)

(경로 없이) 퍼블릭 디펜던시 모듈 이름 목록입니다 (private/public 인클루드는 자동으로 합니다). 공용 소스 파일에 필요한 모듈입니다.

PrivateIncludePathModuleNames (List<String>)

모듈의 프라이빗 코드 파일이 접근해야 하지만, "임포트" 또는 링크를 걸어줄 필요는 없는 헤어 파일로 된 (경로 없이) 모듈 이름 목록입니다.

PrivateDependencyModuleNames (List<String>)

프라이빗 디펜던시 모듈 이름 목록입니다. 프라이빗 코드가 의존은 하지만 퍼블릭 인클루드 파일의 어느 것도 의존하지 않는 모듈입니다.

CircularlyReferencedDependentModules (List<String>)

기존 레거시 버전 지원용으로, 새 코드에서는 사용하지 말아야 합니다. 순환 레퍼런스로 취급해야 하는 모듈 디펜던시 목록입니다. 이 모듈은 퍼블릭 또는 프라이빗 디펜던트 모듈 리스트 중 하나에는 이미 추가되어 있어야 합니다.

PublicSystemIncludePaths (List<String>)

시스템/라이브러이 인클루드 경로 목록으로, 보통 외부 (써드 파티) 모듈에 사용됩니다. 이는 퍼블릭 스테이블 헤더 파일 디렉터리로 헤더 디펜던시 리졸브 시 검사하지 않습니다.

PublicIncludePaths (List<String>)

(이 세팅은 현재 필요치 않은데, 'Public' 폴더의 모든 파일을 발견하기 때문입니다) 다른 모듈에 노출된 모든 인클루드 파일에 대한 경로 목록입니다.

PrivateIncludePaths (List<String>)

이 모듈의 내부 인클루드 파일의 모든 경로 목록으로, 다른 모듈에 노출되지 않은 것입니다 (최소 하나의 인클루드는 'Private' 경로에, 상대 경로를 피하고자 한다면 추가 가능합니다).

PublicLibraryPaths (List<String>)

시스템/라이브러리 경로 목록입니다 (.lib 파일 디렉터리). 보통 외부 (써드 파티) 모듈에 사용됩니다.

PublicAdditionalLibraries (List<String>)

부가 라이브러리 목록입니다 (확장자를 포함한 .lib 파일 이름). 보통 외부 (써드 파티) 모듈에 사용됩니다.

PublicFrameworks (List<String>)

XCode 프레임워크 목록입니다. (iOS 및 MacOS)

PublicWeakFrameworks (List<String>)

약 프레임워크 목록입니다 (OS 버전 전환용).

PublicAdditionalFrameworks (List<UEBuildFramework>)

추가 프레임워크 목록입니다. 보통 Mac 및 iOS 용 외부 (써드 파티) 모듈에 사용됩니다.

AdditionalBundleResources (List<UEBuildBundleResource>)

Mac 또는 iOS 용 앱 번들에 복사해야 하는 부가 자료 목록입니다.

PublicAdditionalShadowFiles (List<String>)

(iOS 등) 원격 머신에서 실행되는 빌드의 경우, 이 리스트에 앱의 링크 성공을 위해 복사해야 하는 부가 파일이 들어갑니다. 소스/헤더 파일 및 PCH 는 자동 복사됩니다. 보통 미리 컴파일된 써드 파티 라이브러리 디펜던시 목록일 뿐입니다.

PublicDelayLoadDLLs (List<String>)

딜레이 로드 DLL 목록입니다. 보통 외부 (써드 파티) 모듈에 사용됩니다.

PrivateDefinitions (List<String>)

이 모듈에 대한 프라이빗 컴파일러 정의입니다.

PublicDefinitions (List<String>)

이 모듈에 대한 퍼블릭 컴파일러 정의입니다.

DynamicallyLoadedModuleNames (List<String>)

런타임에 이 모듈이 필요로 할 수 있는 부가 모듈입니다.

RuntimeDependencies (RuntimeDependencyList)

런타임에 이 모듈이 의존하는 파일 목록입니다. 이 파일은 타깃과 함께 스테이지에 올라갑니다.

AdditionalPropertiesForReceipt (ReceiptPropertyList)

빌드 리십트에 추가해야 하는 부가 프로퍼티 목록입니다.

PrecompileForTargets (PrecompileTargetsType)

이 모듈을 미리 컴파일할 대상 타깃입니다.

ExternalDependencies (List<String>)

변경되면 makefile 유효 상태가 해지되는 외부 파일입니다. 상대 경로는 .build.cs 파일을 기준으로 해석합니다.

bLegacyPublicIncludePaths (Nullable<Boolean>)

이 모듈이 'Public' 폴더 루트 기준 다른 모듈에서 온 포함 헤더 기준을 충족하는지 여부입니다. 컴파일러에 전달할 검색 경로 수를 줄여, 퍼포먼스가 향상되고 컴파일러 명령줄 길이가 줄어듭니다.