UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FProjectDescriptor Struct Reference

#include <ProjectDescriptor.h>

Public Member Functions

PROJECTS_API FProjectDescriptor ()
 
PROJECTS_API void Sign (const FString &FilePath)
 
PROJECTS_API bool IsSigned (const FString &FilePath) const
 
PROJECTS_API int32 FindPluginReferenceIndex (const FString &PluginName) const
 
PROJECTS_API void UpdateSupportedTargetPlatforms (const FName &InPlatformName, bool bIsSupported)
 
PROJECTS_API bool Load (const FString &FileName, FText &OutFailReason)
 
PROJECTS_API bool Read (const FJsonObject &Object, const FString &PathToProject, FText &OutFailReason)
 
PROJECTS_API bool Save (const FString &FileName, FText &OutFailReason)
 
PROJECTS_API void Write (TJsonWriter<> &Writer, const FString &PathToProject) const
 
const TArray< FString > & GetAdditionalPluginDirectories () const
 
PROJECTS_API bool AddPluginDirectory (const FString &Dir)
 
PROJECTS_API bool RemovePluginDirectory (const FString &Dir)
 
const TArray< FString > & GetAdditionalRootDirectories () const
 
PROJECTS_API bool AddRootDirectory (const FString &Dir)
 
PROJECTS_API bool RemoveRootDirectory (const FString &Dir)
 

Static Public Member Functions

static PROJECTS_API FString GetExtension ()
 

Public Attributes

EProjectDescriptorVersion::Type FileVersion
 
FString EngineAssociation
 
FString Category
 
FString Description
 
TArray< FModuleDescriptorModules
 
TArray< FPluginReferenceDescriptorPlugins
 
TArray< FNameTargetPlatforms
 
uint32 EpicSampleNameHash
 
FCustomBuildSteps PreBuildSteps
 
FCustomBuildSteps PostBuildSteps
 
bool bIsEnterpriseProject
 
bool bDisableEnginePluginsByDefault
 

Friends

struct FProjectsLoadingPluginDescriptorTestsHelper
 

Detailed Description

Descriptor for projects. Contains all the information contained within a .uproject file.

Constructor & Destructor Documentation

◆ FProjectDescriptor()

FProjectDescriptor::FProjectDescriptor ( )

Constructor.

Member Function Documentation

◆ AddPluginDirectory()

bool FProjectDescriptor::AddPluginDirectory ( const FString &  Dir)

Adds a directory to the additional plugin directories list.

Parameters
Dir- the new directory to add (must be a full path)
Returns
whether the plugin directory list was changed

◆ AddRootDirectory()

bool FProjectDescriptor::AddRootDirectory ( const FString &  Dir)

Adds a directory to the additional root directories list.

Parameters
Dir- the new directory to add (must be a full path)
Returns
whether the root directory list was changed

◆ FindPluginReferenceIndex()

int32 FProjectDescriptor::FindPluginReferenceIndex ( const FString &  PluginName) const

Finds the index of a plugin in the references array

◆ GetAdditionalPluginDirectories()

const TArray< FString > & FProjectDescriptor::GetAdditionalPluginDirectories ( ) const
inline
Returns
- Access to the additional plugin directories

◆ GetAdditionalRootDirectories()

const TArray< FString > & FProjectDescriptor::GetAdditionalRootDirectories ( ) const
inline
Returns
- Access to the additional root directories

◆ GetExtension()

FString FProjectDescriptor::GetExtension ( )
static

Returns the extension used for project descriptors (uproject)

◆ IsSigned()

bool FProjectDescriptor::IsSigned ( const FString &  FilePath) const

Checks whether the descriptor is signed

◆ Load()

bool FProjectDescriptor::Load ( const FString &  FileName,
FText OutFailReason 
)

Loads the descriptor from the given file.

◆ Read()

bool FProjectDescriptor::Read ( const FJsonObject Object,
const FString &  PathToProject,
FText OutFailReason 
)

Reads the descriptor from the given JSON object

◆ RemovePluginDirectory()

bool FProjectDescriptor::RemovePluginDirectory ( const FString &  Dir)

Removes the directory from the list to scan

Parameters
Dirthe directory to remove (must be a full path)
Returns
whether the plugin directory list was changed

◆ RemoveRootDirectory()

bool FProjectDescriptor::RemoveRootDirectory ( const FString &  Dir)

Removes the directory from the list to scan

Parameters
Dirthe directory to remove (must be a full path)
Returns
whether the root directory list was changed

◆ Save()

bool FProjectDescriptor::Save ( const FString &  FileName,
FText OutFailReason 
)

Saves the descriptor to the given file.

◆ Sign()

void FProjectDescriptor::Sign ( const FString &  FilePath)

Signs the project given for the given filename

◆ UpdateSupportedTargetPlatforms()

void FProjectDescriptor::UpdateSupportedTargetPlatforms ( const FName InPlatformName,
bool  bIsSupported 
)

Updates the supported target platforms list

◆ Write()

void FProjectDescriptor::Write ( TJsonWriter<> &  Writer,
const FString &  PathToProject 
) const

Writes the descriptor to the given JSON object

Friends And Related Symbol Documentation

◆ FProjectsLoadingPluginDescriptorTestsHelper

friend struct FProjectsLoadingPluginDescriptorTestsHelper
friend

Member Data Documentation

◆ bDisableEnginePluginsByDefault

bool FProjectDescriptor::bDisableEnginePluginsByDefault

Indicates that enabled by default engine plugins should not be enabled unless explicitly enabled by the project or target files.

◆ bIsEnterpriseProject

bool FProjectDescriptor::bIsEnterpriseProject

Indicates if this project is an Enterprise project

◆ Category

FString FProjectDescriptor::Category

Category to show under the project browser

◆ Description

FString FProjectDescriptor::Description

Description to show in the project browser

◆ EngineAssociation

FString FProjectDescriptor::EngineAssociation

The engine to open this project with. Set this value using IDesktopPlatform::SetEngineIdentifierForProject to ensure that the most portable value for this field is used.

This field allows us to open the right version of the engine when you double-click on a .uproject file, and to detect when you open a project with a different version of the editor and need the upgrade/downgrade UI flow. The normal engine version doesn't work for those purposes, because you can have multiple 4.x branches in various states on one machine.

For Launcher users, this field gets set to something stable like "4.7" or "4.8", so you can swap projects and game binaries between users, and it'll automatically work on any platform or machine regardless of where the engine is installed. You can only have one binary release of each major engine version installed at once.

For Perforce or Git users that branch the engine along with their games, this field is left blank. You can sync the repository down on any platform and machine, and it can figure out which engine a project should use by looking up the directory hierarchy until it finds one.

For other cases, where you have a source build of the engine but are working with a foreign project, we use a random identifier for each local engine installation and use the registry to map it back to the engine directory. All bets are off as to which engine you should use to open it on a different machine, and using a random GUID ensures that every new machine triggers the engine selection UI when you open or attempt to generate project files for it.

For users which mount the engine through a Git submodule (where the engine is in a subdirectory of the project), this field can be manually edited to be a relative path.

See also
IDesktopPlatform::GetEngineIdentifierForProject
IDesktopPlatform::SetEngineIdentifierForProject
IDesktopPlatform::GetEngineRootDirFromIdentifier
IDesktopPlatform::GetEngineIdentifierFromRootDir

◆ EpicSampleNameHash

uint32 FProjectDescriptor::EpicSampleNameHash

A hash that is used to determine if the project was forked from a sample

◆ FileVersion

EProjectDescriptorVersion::Type FProjectDescriptor::FileVersion

Descriptor version number.

◆ Modules

TArray<FModuleDescriptor> FProjectDescriptor::Modules

List of all modules associated with this project

◆ Plugins

TArray<FPluginReferenceDescriptor> FProjectDescriptor::Plugins

List of plugins for this project (may be enabled/disabled)

◆ PostBuildSteps

FCustomBuildSteps FProjectDescriptor::PostBuildSteps

Custom steps to execute after building targets in this project

◆ PreBuildSteps

FCustomBuildSteps FProjectDescriptor::PreBuildSteps

Custom steps to execute before building targets in this project

◆ TargetPlatforms

TArray<FName> FProjectDescriptor::TargetPlatforms

Array of platforms that this project is targeting


The documentation for this struct was generated from the following files: