Engine: UE 4.7.0 (with engine source)
Issue: Compiling my game in visual studio takes about 15-20 minutes after performing a hot compile.
Repro steps:
- Create a C++ project with source code.
- Build your game from the source code and let the editor open it up. This should take about 2 minutes maximum.
- Create a blueprint which inherits from a C++ class
- Modify the underlying C++ class and save the file in visual studio
- Within the editor, use the Hot Compile button to compile the class changes. This should take around 10 seconds.
- Shut down the editor and go back to visual studio
- Right click on your project and select “Debug → Start new instance”
- Visual studio will build the project and it will take about 15-20 minutes as it rebuilds 74 different libraries which have nothing to do with any game project changes. It is not performing a full engine recompile (which takes 55 minutes).
Here’s something else I’ve noticed:
If I never use the hot compile and just exit back to visual studio and rebuild the game, it always takes about 60-120 seconds. It’s quite fast, relatively speaking.
Right now, I have to choose between whether I want to use the hot compile and risk an editor crash plus a rebuild which takes 15-20 minutes, or just spend the 2 minutes per code change.
This becomes a bit of an iteration issue when the hot compile fails, and the time cost is pretty bad for iterating quickly over changes.
Ideally, I’d use the hot compile as much as possible, until it crashes the editor somehow, and then when that happens, just rebuild using visual studio and be back up and running in 2 minutes.
Here is my build order log (17 minues, 45 seconds):
1>------ Build started: Project: MageMaster2, Configuration: DebugGame_Editor x64 ------
1> Parsing headers for MageMaster2Editor
1> Reflection code generated for MageMaster2Editor
1> Deleting old hot reload file: "C:\Users\Eric\Documents\Unreal Projects\MageMaster2\Binaries\Win64\UE4Editor-MageMaster2-5785-Win64-DebugGame.dll".
1> Deleting old hot reload file: "C:\Users\Eric\Documents\Unreal Projects\MageMaster2\Binaries\Win64\UE4Editor-MageMaster2-5785-Win64-DebugGame.pdb".
1> Performing 74 actions (4 in parallel)
1> Slate.generated.cpp
1> CoreUObject.generated.cpp
1> InputCore.generated.cpp
1> SlateCore.generated.cpp
1> [5/74] Link UE4Editor-CoreUObject.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-CoreUObject.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-CoreUObject.exp
1> UnrealEd.generated.cpp
1> EngineMessages.generated.cpp
1> [8/74] Link UE4Editor-EngineMessages.dll
1> [9/74] Link UE4Editor-InputCore.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EngineMessages.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EngineMessages.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-InputCore.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-InputCore.exp
1> EngineSettings.generated.cpp
1> Landscape.generated.cpp
1> AIModule.generated.cpp
1> [13/74] Link UE4Editor-SlateCore.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SlateCore.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SlateCore.exp
1> [14/74] Link UE4Editor-Slate.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Slate.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Slate.exp
1> Kismet.generated.cpp
1> [16/74] Link UE4Editor-EngineSettings.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EngineSettings.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EngineSettings.exp
1> [17/74] Link UE4Editor-Kismet.lib
1> [18/74] Link UE4Editor-AIModule.lib
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AIModule.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AIModule.exp
1> Engine.generated.1.cpp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Kismet.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Kismet.exp
1> Engine.generated.2.cpp
1> [21/74] Link UE4Editor-Landscape.lib
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Landscape.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Landscape.exp
1> Engine.generated.5.cpp
1> [23/74] Link UE4Editor-UnrealEd.lib
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEd.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEd.exp
1> Engine.generated.4.cpp
1> Engine.generated.3.cpp
1> EditorStyle.generated.cpp
1> TextureEditor.generated.cpp
1> WidgetCarousel.generated.cpp
1> [29/74] Link UE4Editor-Engine.dll
1> [30/74] Link UE4Editor-EditorStyle.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EditorStyle.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-EditorStyle.exp
1> Foliage.generated.cpp
1> SourceCodeAccess.generated.cpp
1> [33/74] Link UE4Editor-SourceCodeAccess.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SourceCodeAccess.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SourceCodeAccess.exp
1> GraphEditor.generated.cpp
1> [35/74] Link UE4Editor-WidgetCarousel.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-WidgetCarousel.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-WidgetCarousel.exp
1> BlueprintGraph.generated.cpp
1> AnimGraph.generated.cpp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Engine.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Engine.exp
1> OnlineSubsystem.generated.cpp
1> SceneOutliner.generated.cpp
1> [40/74] Link UE4Editor-GraphEditor.lib
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GraphEditor.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GraphEditor.exp
1> StatsViewer.generated.cpp
1> NewsFeed.generated.cpp
1> AutomationMessages.generated.cpp
1> [44/74] Link UE4Editor-AutomationMessages.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AutomationMessages.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AutomationMessages.exp
1> [45/74] Link UE4Editor-OnlineSubsystem.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineSubsystem.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineSubsystem.exp
1> UnrealEdMessages.generated.cpp
1> [47/74] Link UE4Editor-UnrealEdMessages.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEdMessages.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEdMessages.exp
1> GameplayTags.generated.cpp
1> SessionMessages.generated.cpp
1> [50/74] Link UE4Editor-SessionMessages.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SessionMessages.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SessionMessages.exp
1> InternationalizationSettings.generated.cpp
1> OnlineSubsystemUtils.generated.cpp
1> SwarmInterface.generated.cpp
1> TargetDeviceServices.generated.cpp
1> OnlineBlueprintSupport.generated.cpp
1> [56/74] Link UE4Editor-TargetDeviceServices.dll
1> [57/74] Link UE4Editor-SwarmInterface.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-TargetDeviceServices.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-TargetDeviceServices.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SwarmInterface.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SwarmInterface.exp
1> [58/74] Link UE4Editor-Foliage.dll
1> [59/74] Link UE4Editor-TextureEditor.dll
1> [60/74] Link UE4Editor-BlueprintGraph.dll
1> [61/74] Link UE4Editor-SceneOutliner.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-TextureEditor.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-TextureEditor.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SceneOutliner.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-SceneOutliner.exp
1> [62/74] Link UE4Editor-NewsFeed.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-BlueprintGraph.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-BlueprintGraph.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Foliage.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Foliage.exp
1> [63/74] Link UE4Editor-StatsViewer.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-NewsFeed.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-NewsFeed.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-StatsViewer.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-StatsViewer.exp
1> [64/74] Link UE4Editor-GameplayTags.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GameplayTags.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GameplayTags.exp
1> [65/74] Link UE4Editor-InternationalizationSettings.dll
1> [66/74] Link UE4Editor-OnlineSubsystemUtils.dll
1> [67/74] Link UE4Editor-Landscape.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-InternationalizationSettings.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-InternationalizationSettings.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineSubsystemUtils.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineSubsystemUtils.exp
1> [68/74] Link UE4Editor-AIModule.dll
1> [69/74] Link UE4Editor-MageMaster2-Win64-DebugGame.dll
1> [70/74] Link UE4Editor-AnimGraph.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AnimGraph.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AnimGraph.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Landscape.lib.suppressed and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Landscape.lib.exp
1> Creating library C:\Users\Eric\Documents\Unreal Projects\MageMaster2\Intermediate\Build\Win64\MageMaster2Editor\DebugGame\UE4Editor-MageMaster2-Win64-DebugGame.lib and object C:\Users\Eric\Documents\Unreal Projects\MageMaster2\Intermediate\Build\Win64\MageMaster2Editor\DebugGame\UE4Editor-MageMaster2-Win64-DebugGame.exp
1> [71/74] Link UE4Editor-OnlineBlueprintSupport.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineBlueprintSupport.lib and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-OnlineBlueprintSupport.exp
1> [72/74] Link UE4Editor-Kismet.dll
1> [73/74] Link UE4Editor-UnrealEd.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AIModule.lib.suppressed and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-AIModule.lib.exp
1> [74/74] Link UE4Editor-GraphEditor.dll
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Kismet.lib.suppressed and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-Kismet.lib.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GraphEditor.lib.suppressed and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-GraphEditor.lib.exp
1> Creating library C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEd.lib.suppressed and object C:\Users\Eric\Documents\Visual Studio 2013\Projects\UnrealEngine\Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-UnrealEd.lib.exp
1> -------- End Detailed Actions Stats -----------------------------------------------------------
1> Total build time: 1066.84 seconds
========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========