UnrealBuildTool(UBT)의 상세 로그를 내고 동작을 조사하자

가장자리 아래의 힘 UBT



UE4의 컴파일을 통괄하는 툴이 UnrealBuildTool입니다.
빌드가 필요한지 판단하고 빌드를 실시하거나, 사전 처리를 자동으로 해 주거나 여러가지 처리를 실시하고 있습니다.

매우 중요한 도구이지만, 잘 할 때는 가장자리 아래의 힘있는 별로 의식하지 않아도 좋은 도구이기도합니다.
그러나 어떤 경우에는 의도대로 움직이지 않을 수 있습니다.

자세한 로그를 작성하여 동작을 확인합시다.



표준의 설정에서는 UBT는 그다지 많은 것을 로그에 출력하지 않습니다만, 소스를 보면 상당히 많이 로그를 출력해 주게 되어 있는 것을 알 수 있습니다.
        public UEBuildModuleCPP(ModuleRules Rules, DirectoryReference IntermediateDirectory, DirectoryReference GeneratedCodeDirectory)
            : base(Rules)
        {
            this.IntermediateDirectory = IntermediateDirectory;
            this.GeneratedCodeDirectory = GeneratedCodeDirectory;

            foreach (string Def in PublicDefinitions)
            {
                Log.TraceVerbose("Compile Env {0}: {1}", Name, Def);
            }

            foreach (string Def in Rules.PrivateDefinitions)
            {
                Log.TraceVerbose("Compile Env {0}: {1}", Name, Def);
            }

UBT는 Editor와 마찬가지로 Verbosity 설정을 가지고 있으며, 이것을 변경하면 더 자세한 로그를 얻을 수 있습니다.
활성화하려면 VisualStudio의 시작 프로젝트(BlueprintProject의 경우 UE4, C++Project의 경우 프로젝트)의 속성을 열고 NMake->Build Command Line/Rebuild Command Line 에 -Verbose 를 추가합니다.



대량의 로그가 출력되어 빌드 시간이 불필요하게 걸린다고 생각하므로, 불필요한 때는 지워 주세요.

추가: 또 다른 방법 ~ Build.bat 편집



위의 솔루션의 속성에서 볼 수 있듯이 빌드는 Engine\Build\BatchFiles.Build.bat를 호출하여 시작됩니다.
이 배치 파일 중에 옵션을 더해 버리는 것도 물론 상세 로그를 얻을 수 있습니다.
다음과 같이 UBT를 시작하는 줄 끝에 -verbose를 추가합니다.

Engine\Build\Batchfiles\Build.bat
IF EXIST ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe (
        ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -verbose
        popd

        REM Ignore exit codes of 2 ("ECompilationResult.UpToDate") from UBT; it's not a failure.
        if "!ERRORLEVEL!"=="2" (
            EXIT /B 0

좋은 웹페이지 즐겨찾기