Where is the documentation on the uproject file format?

Hi folks,

I’m looking for documentation regarding the format of the uproject file format. I’m asking because when I look inside of the generated .Build.cs file, in my fresh project, it has the following suggestion …

To include OnlineSubsystemSteam, add
it to the plugins section in your
uproject file with the Enabled
attribute set to true

So now I’m curious about the format of that file. I can’t seem to easily locate it via google, or the docs.

Any ideas?

It kind of matches with uplugin file stricture and that is documented and remember this is :

To add plugin just add this field:

"Plugins": [
	{
		"Name": "OnlineSubsystemSteam",
		"Enabled": true
	}
    ]

If you already have those in your uproject just add field in array

And i don’t think you need to do that, you can enable OnlineSubsystemSteam in plugin manager

It looks like the project area mirrors the FProjectDescriptor class found in …\Engine\Source\Runtime\Projects\Public\ProjectDescriptor.h and the module section mirrors FModuleDescriptor found in C:\EpicGames\UE_4.26\Engine\Source\Runtime\Projects\Public\ModuleDescriptor.h

Documentation? Not so much. There are a couple interesting tidbits floating around in there however… Black and white lists for platforms, targets, target configs, and programs… a full list of all the type enumeration values:

	// Loads on all targets, except programs.
	Runtime,
	
	// Loads on all targets, except programs and the editor running commandlets.
	RuntimeNoCommandlet,
	
	// Loads on all targets, including supported programs.
	RuntimeAndProgram,
	
	// Loads only in cooked games.
	CookedOnly,

	// Only loads in uncooked games.
	UncookedOnly,

	// Deprecated due to ambiguities. Only loads in editor and program targets, but loads in any editor mode (eg. -game, -server).
	// Use UncookedOnly for the same behavior (eg. for editor blueprint nodes needed in uncooked games), or DeveloperTool for modules
	// that can also be loaded in cooked games but should not be shipped (eg. debugging utilities).
	Developer,

	// Loads on any targets where bBuildDeveloperTools is enabled.
	DeveloperTool,

	// Loads only when the editor is starting up.
	Editor,
	
	// Loads only when the editor is starting up, but not in commandlet mode.
	EditorNoCommandlet,

	// Loads only on editor and program targets
	EditorAndProgram,

	// Only loads on program targets.
	Program,
	
	// Loads on all targets except dedicated clients.
	ServerOnly,
	
	// Loads on all targets except dedicated servers.
	ClientOnly,

	// Loads in editor and client but not in commandlets.
	ClientOnlyNoCommandlet,

	//~ NOTE: If you add a new value, make sure to update the ToString() method below!
	max

So the code knows all, but you have to do a little digging.

Sadly, this didn’t help with the problem I was trying to fix, namely how to get boost (:: in particular) to work with UE4. Yes, UE4 does have its own classes, but I wanted to use the same code on both sides of my system… and I’m not sure that’s going to be an option. Makes me sad.