I guess you just compiled ue5.sln once, found ue4editor.exe in binaries, ran it, and selected “Source build at C:\some\path\to\engine” as your current engine for project? or something like this.
In this case, “source build” supposed to be able to recompiled at any time. Things like accidental “rebuild all” will rebuild whole engine again.
I guess the thing you looking for is an Installed build, which you build once and cannot rebuild it from the project. In the drop down such builds are shown as Binary build at …
The engine association of a project is specified in the EngineAssociation field of the .uproject file. On Windows these will look up registry entry HKEY_CURRENT_USER\Software\Epic Games\Unreal Engine\Builds. I altered the engine association of the project by altering this field - but yes I think it is equivalent to the UI method you speak of.
I didn’t build the engine through UE5.sln, I called UnrealBuildTool directly with like:
which is all the UE5.sln does anyway. Again, I think this is equivalent.
I took a look at Installed build, but I guess I want to be able to make engine changes if needed.
Now that I think about it perhaps things are working as intended. I’m just suprised that the build system can’t be configured to compile the engine parts of the game target and store the intermediate files (object files / static libraries) in the engine directory.
The build system seems to store the intermediate files of the game target engine parts in the project directory. So if I build the game target of a clean checkout of the project I get:
and that stores 18G of intermediate files of the engine build in the Intermediate folder of the project.
I could imagine a system that stored those intermediate files in the engine directory instead - and then if there were engine source changes the build would rebuild those files.
I was just wondering if there was a way to configure it like that. Perhaps by doing some of the things that an installed build does.
But I guess there isn’t? Perhaps having a shared cache of engine intermediate files was too hard.