What is the type of PCHUsage in Build.cs file, How could I get definition of it.

I’m using UE4 (4.17.2), VS2017. I have a project with lots of C++ classes. And I see the following error.

  1. 29>c1xx : error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of ‘-Zm90’ or greater
  2. 29>c1xx : fatal error C1076: compiler limit: internal heap limit reached; use /Zm to specify a higher limit

Finally, I searched AnswerHub, and modified
%AppData%\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml file to this:

<?xml version=“1.0” encoding=“utf-8”?>
<Configuration xmlns=“https://www.unrealengine.com/BuildConfiguration”>
<BuildConfiguration>
**<bUseSharedPCHs>false</bUseSharedPCHs> **
</BuildConfiguration>
</Configuration>

by doing this, I fixed this issue.

BUT, I don’t want to modify every machine’s BuildConfiguration.xml file to solve it.
I think it should have a method to solve it by modifying project settings!

At last, I find this one:

But I can’t find the definition of PCHUsage or PCHUsageMode.UseExplicitOrSharedPCHs;
Please tell me where defines these varibles? and What is the type of PCHUsage?

Thanks a LOT!

Can you read source https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/UnrealBuildTool/Configuration/ModuleRules.cs