모듈 프로퍼티 언리얼 엔진의 모듈 프로퍼티 프로퍼티 설명을 포함한 언리얼 빌드 툴 모듈의 개요입니다. 모듈은 언리얼 엔진의 기본 구성 요소입니다. 언리얼 엔진에서 모듈 빌드 방식을 커스터마이징하기 위해 설정할 수 있는 다양한 프로퍼티에 관해 배웁니다.
모듈 은 언리얼 엔진(UE) 의 기본 구성 요소입니다. 엔진은 대규모 모듈 컬렉션으로 구현되며, 게임은 자체 모듈을 제공하여 이를 확장합니다. 각 모듈은 함수 기능 세트를 캡슐화하고 다른 모듈에서 사용할 퍼블릭 인터페이스 및 컴파일 환경(매크로, 인클루드 경로 등)을 제공할 수 있습니다.
모듈은 확장자가 .build.cs
인 C# 소스 파일을 통해 선언되며, 프로젝트의 Source
디렉터리에 저장됩니다. 모듈에 속한 C++ 소스 코드는 .build.cs
파일과 함께 저장되거나 서브디렉터리에 저장됩니다. 각 .build.cs
파일은 ModuleRules
베이스 클래스에서 파생된 클래스를 선언하고 생성자에서 어떻게 빌드되어야 하는지를 제어하는 프로퍼티를 설정합니다. 이러한 .build.cs
파일은 언리얼 빌드 툴(UBT) 로 컴파일되고 전체 컴파일 환경을 결정하도록 구성됩니다.
.build.cs
파일의 일반적인 구조는 다음과 같습니다.
using UnrealBuildTool; using System.Collections.Generic; public class MyModule : ModuleRules { public MyModule(ReadOnlyTargetRules Target) : base(Target) { // 여기에 프로퍼티 및 세팅이 들어갑니다 } }
읽기 전용 프로퍼티
$ IsPlugin (Boolean): 플러그인이 이 모듈을 포함하면 True를 반환합니다.
$ HasPackageOverride (Boolean): 이 모듈에 지정된 오버라이드 타입이 있을 경우 True를 반환합니다.
$ AutoSdkDirectory (String): 활성 호스트 플랫폼을 위한 AutoSDK 디렉터리입니다.
$ EngineDirectory (String): 현재 엔진 디렉터리입니다.
$ PluginDirectory (String): 이 플러그인을 포함하는 디렉터리의 프로퍼티입니다. 서드 파티 종속성에 경로를 추가할 때 유용합니다.
$ ModuleDirectory (String): 이 모듈을 포함하는 디렉터리의 프로퍼티입니다. 서드 파티 종속성에 경로를 추가할 때 유용합니다.
$ TestsDirectory (String): 모듈의 로우 레벨 테스트 디렉터리 Tests
를 반환합니다.
$ BuildOrderSettings (SourceFilesBuildOrderSettings): 모듈의 소스 파일에 대한 선택적 컴파일 순서 오버라이드 규칙입니다.
$ IsVcPackageSupported (Boolean): 빌드 환경설정에 VcPkg가 지원되는지 여부를 반환합니다.
읽기/쓰기 프로퍼티
$ Type (ModuleType): 모듈 타입입니다.
$ BinariesSubFolder (String): 다이내믹 링크 라이브러리(Dynamic-Link Library, DLL)를 빌드할 때 이 모듈을 배치할 Binaries/PLATFORM
폴더의 서브폴더입니다. TargetPlatform
이나 ShaderFormat
모듈처럼 검색을 통해서 찾아지는 모듈에서만 사용해야 합니다. 트래킹에 FindModule
을 사용하지 않으면 모듈을 찾을 수 없습니다.
$ PrivatePCHHeaderFile (String): 이 모듈에 대한 명시적 프라이빗 사전 컴파일된 헤더(Precompiled Header, PCH)입니다. 이 모듈이 공유 PCH를 사용하지 않음을 의미합니다.
$ SharedPCHHeaderFile (String): 이 모듈에서 제공하는 공유 PCH의 헤더 파일 이름입니다. 퍼블릭 C++ 헤더 파일에 대한 유효한 상대 경로여야 합니다. 여러 C++ 모듈에 포함된 헤더 파일에 대해서만 설정해야 합니다.
$ ShortName (String): 이 모듈의 중간 디렉터리와 파일에 대체 이름을 지정합니다. 경로 길이 제한에 도달했을 때 유용합니다.
$ bTreatAsEngineModule (Boolean): 이 모듈을 엔진 모듈(예: 엔진 정의 사용, PCH, DebugGame 환경설정에서 최적화가 활성화된 컴파일)로 취급해야 하는지 여부입니다. 생성된 규칙 어셈블리에 기반한 디폴트로 초기화됩니다.
$ bDeterministic (Boolean): 결정론적 컴파일에 대한 플래그를 설정합니다. 실험단계 기능으로, 완전히 지원되지 않을 수 있습니다. 결정론적 링크는 TargetRules
를 통해 제어됩니다.
$ bUseRTTI (Boolean): 런타임 타입 정보를 사용합니다.
$ bUseAVX (Boolean): 지원하는 플랫폼에서 SSE 또는 AVX 인트린직(intrinsic)을 사용하는 경우 컴파일러가 AVX 인스트럭션을 생성하도록 지시합니다. 이 프로퍼티를 활성화하면 PC 플랫폼의 최소 사양이 변경되며 그에 따른 실행 파일은 AVX 지원 없는 머신에서 충돌합니다.
$ bEnableBufferSecurityChecks (Boolean): 버퍼 보안 확인을 활성화합니다. 이 프로퍼티는 심각한 보안 위험을 방지하기 때문에 일반적으로 활성화해야 합니다.
$ bEnableExceptions (Boolean): 예외 처리를 활성화합니다.
$ bEnableObjCExceptions(Boolean): 오브젝티브-C 예외 처리를 활성화합니다.
$ bEnableUndefinedIdentifierWarnings(Boolean): #if
표현식에서 정의되지 않은 식별자를 사용하면 경고를 표시합니다.
$ StaticAnalyzerCheckers (HashSetclang -Xclang -analyzer-checker-help
또는 clang -Xclang -analyzer-checker-help-alpha
를 실행하여 실험단계 체커의 목록을 볼 수도 있습니다.
$ StaticAnalyzerDisabledCheckers (HashSetStaticAnalyzerCheckers
가 채워진 경우 사용되지 않습니다. Clang에서만 지원됩니다. 디폴트 비활성화 체커 deadcode.DeadStores
와 security.FloatLoopCounter
를 오버라이드합니다. 전체 목록은 Clang 문서의 Clang 체커를 참조하세요. clang -Xclang -analyzer-checker-help
또는 clang -Xclang -analyzer-checker-help-alpha
를 실행하여 실험단계 체커의 목록을 볼 수도 있습니다.
$ StaticAnalyzerAdditionalCheckers (HashSetStaticAnalyzerCheckers
가 채워진 경우 사용되지 않습니다. Clang에서만 지원됩니다. 전체 목록은 Clang 문서의 Clang 체커를 참조하세요. clang -Xclang -analyzer-checker-help
또는 clang -Xclang -analyzer-checker-help-alpha
를 실행하여 실험단계 체커의 목록을 볼 수도 있습니다.
$ bMergeUnityFiles (Boolean): 빠른 컴파일을 위해 모듈과 생성된 Unity 파일을 병합할지 여부입니다.
$ MinSourceFilesForUnityBuildOverride(Int32): Unity 빌드가 이 모듈에 대해 활성화되기 위해 필요한 소스 파일의 수. -1 외의 값으로 설정하면 MinGameModuleSourceFilesForUnityBuild
에서 제어하는 디폴트 세팅을 오버라이드합니다.
$ MinFilesUsingPrecompiledHeaderOverride (Int32): 0이 아니면 BuildConfiguration.MinFilesUsingPrecompiledHeader
를 오버라이드합니다.
$ bBuildLocallyWithSNDBS (Boolean): 모듈이 #import
를 사용하여 SN-DBS로 컴파일할 때 로컬에서 빌드해야 합니다.
$ IsRedistributableOverride (Nullable
$ bLegalToDistributeObjectCode (Boolean): 모듈에 대해 예를 들어 CarefullyRedist, NotForLicensees, NoRedist가 아닌 코드/종속성이 있는 경우에도 이 모듈의 출력을 공개적으로 배포할 수 있는지 여부입니다. 바이너리는 릴리즈하지만 소스는 릴리즈하지 않으려는 경우 이 프로퍼티를 사용해야 합니다.
$ AllowedRestrictedFolders (List
$ AliasRestrictedFolders (Dictionary
$ bEnforceIWYU (Boolean): PCHUsage
가 ExplicitOrSharedPCH
로 설정되었을 때 'Include What You Use(IWYU)' 규칙을 적용합니다. Engine.h
, UnrealEd.h
등의 모놀리식 헤더가 사용될 경우 경고하고, 소스 파일에 일치하는 헤더가 포함되어 있는지를 먼저 확인합니다.
$ bAddDefaultIncludePaths (Boolean): 모듈에 연결된 모든 디폴트 인클루드 경로를 추가할지 여부입니다(예: Source/Classes
폴더, Source/Public
아래의 서브 폴더).
$ bIgnoreUnresolvedSymbols (Boolean): 모듈에서 허상(예: 미해결 외부) 심볼을 무시할지 여부입니다.
$ bPrecompile (Boolean): 이 모듈을 사전 컴파일해야 하는지 여부입니다. 타깃에서 bPrecompile
플래그가 디폴트로 지정됩니다. 모듈이 사전 컴파일되지 않게 하려면 이 플래그를 지우세요.
$ bUsePrecompiled (Boolean): 이 모듈에서 사전 컴파일된 데이터를 사용해야 하는지 여부입니다. 설치된 어셈블리에서 생성된 모듈의 경우 항상 true입니다.
$ bAllowConfidentialPlatformDefines (Boolean): 이 모듈이 PLATFORM_XXXX
스타일 정의를 사용할 수 있는지 여부입니다. XXXX
는 비밀 플랫폼 이름입니다. 이 프로퍼티는 엔진이나 다른 공유 코드에서 #if PLATFORM_XXXX
블록 내부의 비밀 정보를 노출하지 않도록 하는 데 사용됩니다. 그러나 언리얼 엔진 사용자 게임 코드에서는 이를 허용하는 것이 좋습니다.
$ PublicIncludePathModuleNames (List
$ PublicDependencyModuleNames (List
$ PrivateIncludePathModuleNames (List
$ PrivateDependencyModuleNames (List
$ CircularlyReferencedDependentModules (List
$ PublicSystemIncludePaths (List
$ PublicIncludePaths (ListPublic
폴더에서 모든 파일을 검색하기 때문에 현재는 필요하지 않은 세팅입니다).
$ InternalncludePaths (ListInternal
폴더에서 모든 파일을 검색하기 때문에 현재 필요하지 않은 세팅입니다).
$ PrivateIncludePaths (ListPrivate
경로로 최소 1회 인클루드, 상대 경로를 피하려는 경우 인클루드 횟수가 늘어남).
$ PublicSystemLibraryPaths (List.lib
파일의 디렉터리). 외부 (서드 파티) 모듈의 경우 대신 PublicAdditionalLibaries
를 사용하세요.
$ PrivateRuntimeLibraryPaths (List.so
파일).
$ PublicRuntimeLibraryPaths (List.so
파일).
$ PublicAdditionalLibraries (List.lib
파일의 이름). 일반적으로 외부(서드 파티) 모듈에 사용됩니다.
$ PublicPreBuildLibraries (List.lib
파일의 이름). 일반적으로 아직 빌드 중인 추가 타깃에 사용되지만 TargetRules.PreBuildSteps
또는 TargetRules.PreBuildTargets
중 하나를 사용합니다.
$ PublicSystemLibraries (List.lib
파일을 참조해야 할 경우 대신 PublicAdditionalLibraries
를 사용하세요.
$ PublicFrameworks (List
$ PublicWeakFrameworks(List
$ PublicAdditionalFrameworks (List
$ AdditionalBundleResources (List
$ TypeLibraries (List
$ PublicDelayLoadDLLs (List
$ PrivateDefinitions (List
$ PublicDefinitions(List
$ DynamicallyLoadedModuleNames (List
$ RuntimeDependencies (RuntimeDependencyList): 런타임에 이 모듈이 의존하는 파일의 목록입니다. 이 파일은 타깃과 함께 스테이징됩니다.
$ AdditionalPropertiesForReceipt (ReceiptPropertyList): 빌드를 받을 때 추가할 추가 프로퍼티 목록입니다.
$ PrecompileForTargets (PrecompileTargetsType): 이 모듈을 사전 컴파일해야 하는 타깃입니다.
$ ExternalDependencies (List.Build.cs
파일을 기준으로 해석됩니다.
$ SubclassRules (List
$ bRequiresImplementModule (NullableIMPLEMENT_MODULE
매크로를 구현해야 하는지 여부입니다. 글로벌 오버로드를 수행하기 위해 IMPLEMENT_MODULE
매크로를 사용하기 때문에 대부분의 UE 모듈에는 이 프로퍼티가 필요합니다(예: GMalloc
에 포워딩하는 신규/삭제 연산자).
$ bValidateCircularDependencies (Boolean): 더 느린 빌드에서 허용 목록 순환 모듈 종속성 결과에 대해 순환 종속성의 유효성을 검사할지 여부입니다. 이 옵션은 비활성화하지 않는 것이 좋습니다. 허용 목록에 대해 항상 유효한 엔진 모듈의 경우 이 옵션은 무시됩니다.
$ CppStandard (CppStandardVersion): 이 모듈을 컴파일하는 데 사용할 표준입니다.
$ CStandard (CStandardVersion): 이 모듈을 컴파일하는 데 사용할 표준입니다.
$ ModuleSymbolVisibility (SymbolVisibility): 심볼의 비저빌리티를 제어합니다.
$ Name (String): 이 모듈의 이름입니다.
$ OverridePackageType (PackageOverrideType): 서로 다른 패키지 플래그가 설정되는 모듈의 오버라이드 타입입니다. 모듈이 플러그인의 일부인 경우 이미 .uplugin
파일에 설정되어 있기 때문에 사용할 수 없습니다.
$ OptimizeCode (CodeOptimization): 이 모듈의 코드가 최적화되어야 하는 상황입니다.
$ PCHUsage (PCHUsageMode): 이 모듈의 사전 컴파일된 헤더 사용입니다.
$ DefaultBuildSettings (BuildSettingsVersion): 기본적으로 어느 엔진 버전의 빌드 세팅을 사용하는지입니다.
$ IncludeOrderVersion (EngineIncludeOrderVersion): 이 모듈을 컴파일할 때 사용할 인클루드 순서의 버전입니다. 명령줄 또는 모듈 규칙에서 -ForceIncludeOrder
를 통해 오버라이드될 수 있습니다.
$ ShadowVariableWarningLevel (WarningLevel): 섀도 변수 경고를 처리하는 방법입니다.
$ UnsafeTypeCastWarningLevel (WarningLevel): 안전하지 않은 묵시적 타입 형변환 경고를 어떻게 처리할지입니다(예: double->float
또는 int64->int32
).
$ bUseUnity (Boolean): Unity 빌드가 활성화되었고 이 특정 모듈이 Unity로 빌드될 경우 이것을 사용하여 오버라이드할 수 있습니다. BuildConfiguration.cs
의 모듈별 환경설정을 사용하여 설정할 수 있습니다.
$ bLegacyPublicIncludePaths (Boolean): 이 모듈이 Public
폴더의 루트를 기준으로 다른 모듈에서 포함된 헤더에 적합한지 여부입니다. 이렇게 하면 컴파일러에 전달해야 하는 검색 경로의 수가 줄어들어, 퍼포먼스가 향상되고 컴파일러 명령줄 길이가 줄어듭니다.