Source control how-tos with CPP project? (Perforce)

I have a CPP project I’m working on with a large team and I don’t fully understand what need to be on source control. I have Config, Content, Source directories, and the uproject. I understand that right clicking on the project gives a context menu with “Generate project files”, however I didn’t see it. The engine generates project files to build from UnrealVersionSelector, right? I have a UnrealVersionSelector-Win64-Shipping.exe in the binaries I compiled myself from github. Appreantly that isn’t the same thing as UnrealVersionSelector.exe that comes with the launcher. So is the launcher 100% nesscary for this or did I just screw up? I personally hate the launcher and I uninstall it when I don’t need it.

I also have concerns and questions about project generation from the uproject on source control. Is the uproject binary suppost to change? My understanding is that you’re not suppose to be checking it out in perforce to do anything locally with the project, but in this instance I had to in order to generate project files and get the visual studio solution file. After generation the binary had changed, so I looked at the two, before and after, in winmerge and saw that the EngineAssociation field had changed. Before it was “4.14” now its “{C072D636-481F-4106-4992-A59CD479BDED}”. That’s totally weird and I don’t understand it. When clicking generate project files and it asked what engine version to build at I pointed to the directory with what I compiled myself form github, and yes its 4.14. What gets even weirder is that when I generated the project files again using the engine binaries obtained through the launcher, EngineAssociation read “{EC22B95C-45A8-B7A3-1989-CFB7D3D6F5FA}”.

¯_(ツ)_/¯

What is this field suppose to be doing? Is 4.14 from the launcher somehow different from 4.14 on github? More importantly, why is this field different when someone else created the uproject then I generated my own project files from it (using the same engine version from the launcher)?

EDIT:
Okay… when I first generated with the engine downloaded from the launcher, that was in a different directory because I freakin hate how the launcher doesn’t let you choose where engine binaries go. I re-downloaded 4.14 thinking what I have might be corrupted, left it in the default location, generated project files this time not asking where the build target is, and the EngineAssociation field read “4.14”. What? WHAT? I don’t… I can’t… even… Why?

So then I took the 4.14 folder in the launcher directory, move it, uninstalled 4.14 in the launcher, checked out my uproject again, generated project files choose the directory I just moved 4.14 to when asked, and the EngineAssociation field read “{EC22B95C-45A8-B7A3-1989-CFB7D3D6F5FA}”. What? So why is the engine super draconian about where the build target is? This number seems to be representative of what directory its in outside the launcher. Which bring me to my first question at the top of this post, are the binaries in the launcher super necessary to generate project files?

,I found this blogpost to be really helpfull when first setuping UE4 with perforce.

And for the weird ID, if you create a project from an engine from the launcher it knows which version of the engine it is. With a custom build engine with the source from github, it creates this random GUID that represent a unique ID defining your build from the sources. Since you have / can modify the sources, it’s not the same engine as 4.14 and this is what that GUID represent.

Okay that makes sense. But strangely it does that to the launcher’s version too if it gets moved out of the launcher’s directory.

Do you need any more assistance with this ?

I guess. I still have unanswered questions about this because I seem to get IDs unique to the directory if the binaries are outside the launcher directory. I guess I’ll have to poke someone’s brain at Epic about it.