private void GenerateSNDBSIncludeRewriteRules()
        {
            if (!Directory.Exists(IncludeRewriteRulesFile.Directory.FullName))
            {
                Directory.CreateDirectory(IncludeRewriteRulesFile.Directory.FullName);
            }

            List <string> IncludeRewriteRulesText = new List <string>();

            IncludeRewriteRulesText.Add("[computed-include-rules]");
            IncludeRewriteRulesText.Add(@"pattern1=^COMPILED_PLATFORM_HEADER\(\s*([^ ,]+)\)");

            // Get all registered platforms. Most will just use the name as is, but some may have an override so
            // add all distinct entries to the list.
            IEnumerable <UnrealTargetPlatform> Platforms = UEBuildPlatform.GetRegisteredPlatforms();
            List <string> PlatformNames = new List <string>();

            foreach (UnrealTargetPlatform Platform in Platforms)
            {
                UEBuildPlatform PlatformData = UEBuildPlatform.GetBuildPlatform(Platform);
                if (!PlatformNames.Contains(PlatformData.GetPlatformName()))
                {
                    PlatformNames.Add(PlatformData.GetPlatformName());
                }
            }

            IEnumerable <string> PlatformExpansions = PlatformNames.Select(p => String.Format("{0}/{0}$1", p));

            IncludeRewriteRulesText.Add(String.Format("expansions1={0}", String.Join("|", PlatformExpansions)));
            File.WriteAllText(IncludeRewriteRulesFile.FullName, String.Join(Environment.NewLine, IncludeRewriteRulesText));
        }