Why does the Engine keep recompiling if I have to do a .h recompile, even if I build only project?

#Update

Now that I"ve reported the UBT for acting strange it started behaving again.

Congrats on the AI behavior tree programming for the UBT!

#Will Keep You Posted

I will keep you posted if I can figure out the exact repro steps for this.

I think it might have something to do somehow with the hotkey I was using for BuildOnlySelection.

I switched from F7 to F12 and will see how it goes :slight_smile:

What is the most puzzling about this is that it never used to happen ever :slight_smile:

It might just be user error somehow, but I’ve been using same steps for months

will let you know :slight_smile:

Rama

Dear Friends at Epic,

I just started having this issue out of nowhere!

If I am compiling .cpp only, everything is normal.

But if I have to recompile .h files, now the entire engine wants to recompile itself.

I have tested this multiple times, and again, it just started happening recently after 4.1

I have tried multiple times to:

  • Build Only Project, via right-clicking on my project inside of Games
  • Build, after highlighting my project inside of Games

this is happening for me for two different projects now.

It never used to happen

buuut

it is taking me a reaaaallly long time to compile stuff now!

Help!

Rama

#Build Cs One

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class Solus : ModuleRules
{
	public Solus(TargetInfo Target)
	{
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
	}
}

#Build CS Two

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class VictoryGame : ModuleRules
{
	public VictoryGame(TargetInfo Target)
	{
        MinFilesUsingPrecompiledHeaderOverride = 1;
        bFasterWithoutUnity = true;

        //Private Paths
        PrivateIncludePaths.AddRange(new string[] { 
			"VictoryGame/Private",
			"VictoryGame/Private/Player",
            "VictoryGame/Private/VictoryCore"
            });

        //Public
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine",  
			"RHI", "RenderCore", "ShaderCore",
            "OnlineSubsystem", "OnlineSubsystemUtils"
        });

        //Private Module Dependencies
        PrivateDependencyModuleNames.AddRange(new string[] { "InputCore", "HTTP", "AnimGraph", "BlueprintGraph" });// , "UnrealEd"}); //, "Slate" });

        //Private Module Paths
        PrivateIncludePathModuleNames.AddRange(new string[] { "MeshUtilities" });
        
        //Dynamically Loaded Modules
        DynamicallyLoadedModuleNames.AddRange(new string[] { "MeshUtilities" });


        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        //Online Subsystem Module by Platform
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        if ((Target.Platform == UnrealTargetPlatform.Win32) || (Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Mac))
        {
            if (UEBuildConfiguration.bCompileSteamOSS == true)
            {
                DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
            }
            DynamicallyLoadedModuleNames.Add("OnlineSubsystemNull");
        }
        else if (Target.Platform == UnrealTargetPlatform.PS4)
        {
            DynamicallyLoadedModuleNames.Add("OnlineSubsystemPS4");
        }
        else if (Target.Platform == UnrealTargetPlatform.XboxOne)
        {
            DynamicallyLoadedModuleNames.Add("OnlineSubsystemLive");
        }

	}
}

It happens to me too when I modify a .h in the classes folder (Haven’t tested Public). Works fine if I change a .h located in the Private folder though

It never used to happen, before 4.1, for me, ever!

Epic can you check this out at your convenience?

:heart:

Rama

I think this also happens to me when I try to compile different projects using the same engine source.