Ronsenval / UnrealEngineCompilationUsingFastBuild

Compile Unreal Engine 4.22 using FastBuild
Other
26 stars 13 forks source link

Very long Linking times #2

Open oliviergaertner opened 4 years ago

oliviergaertner commented 4 years ago

Hey first of all thx for your work on this. I've managed to have a 4.23 build working but my linking times are going crazy (full rebuild distributed) Did you notice the same issue in 4.22?

drachenkurve commented 4 years ago

Did you succeeded your build? I'm stuck with .ispc files in Chaos module -- /Fo and /fo failes. Was there any error with you?

oliviergaertner commented 4 years ago

Yep build is working

absolly commented 4 years ago

The very long linking times seem to be improved (reduced to ~35 seconds) by adding:

<bUseFastPDBLinking>true</bUseFastPDBLinking>
<bAddFastPDBToProjects>true</bAddFastPDBToProjects>

to the BuildConfiguration.xml. This article explains what it does: https://devblogs.microsoft.com/cppblog/faster-c-build-cycle-in-vs-15-with-debugfastlink/

The unreal engine wiki describes the flags as follows:

bUseFastPDBLinking Whether to use the :FASTLINK option when building with /DEBUG to create local PDBs on Windows. Fast, but currently seems to have problems finding symbols in the debugger.

bAddFastPDBToProjects Whether to add the -FastPDB option to build command lines by default.

I haven't noticed any issues finding symbols but I've only tested by attaching a debugger and triggering a break point real quick, i'll comment if i find any issues with this workaround. This lowers the linker times to ~35 seconds (Took several minutes before).

I've only tested this with 4.22.3, but I assume it should improve linker times on any ue4 version.

My complete BuildConfiguration.xml looks as follows:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
    <BuildConfiguration>
        <bUsePCHFiles>false</bUsePCHFiles>
        <bUseFastPDBLinking>true</bUseFastPDBLinking>
        <bAddFastPDBToProjects>true</bAddFastPDBToProjects>
    </BuildConfiguration>
</Configuration>