void GenerateCPPConfigureMinGW(ref VCCppProperties vcCppProperties, string NameConfigurate, int idp, int idc, string Name, string[] Defines)
        {
            VCCppProperties.Configurate configurate = new VCCppProperties.Configurate();
            List <string> list = new List <string>();

            GenerateProject.GetInclude(Name, ref list);
            for (int i = 0; i < list.Count; i++)
            {
                list[i] = list[i].Replace('\\', '/');
            }
            configurate.includePath = list;

            List <string> defines = GenerateProject.MapProjects[PlatfromsType[idp]][ConfigurationsType[idc]][Name].Defines.ToList();

            defines.AddRange(Defines);
            configurate.defines      = defines;
            configurate.compilerPath = Path.Combine(Config.Global.MinGWPath, "bin", "g++.exe").Replace('\\', '/');
            configurate.name         = NameConfigurate;
            vcCppProperties.configurations.Add(configurate);
        }
        public void Write()
        {
            if (Config.Global.IsWindows)
            {
                List <string> GlobalDefines = new List <string>();

                GlobalDefines.AddRange(new string[] { "WINDOWS", "LIB", "_LIB" });
                if (Config.Global.UNICODE)
                {
                    GlobalDefines.Add("_UNICODE;");
                    GlobalDefines.Add("UNICODE");
                }


                VCCppProperties vcCppProperties = new VCCppProperties();

                string[][] PlatfromsDefines      = { new string[] { "WIN64", "X64" } };
                string[][] ConfigurationsDefines = { new string[] { "DEBUG", "_DEBUG", "GCC" }, new string[] { "MIXED", "DEBUG", "GCC" }, new string[] { "NDEBUG", "GCC" } };
                {
                    for (int i = 0; i < Platfroms.Length; i++)
                    {
                        for (int a = 0; a < Configurations.Length; a++)
                        {
                            List <string> LocalDefines = new List <string>();
                            LocalDefines.AddRange(GlobalDefines);
                            LocalDefines.AddRange(PlatfromsDefines[i]);
                            LocalDefines.AddRange(ConfigurationsDefines[a]);
                            GenerateCPPConfigureMinGW(ref vcCppProperties, Platfroms[i], i, a, Name, LocalDefines.ToArray());
                        }
                    }
                    File.WriteAllText(Path.Combine(VCDirectory, "c_cpp_properties.json"), JsonConvert.SerializeObject(vcCppProperties, Formatting.Indented));
                }
                if (General)
                {
                    {
                        VCTasks vcTasks = new VCTasks();
                        for (int i = 0; i < Platfroms.Length; i++)
                        {
                            for (int a = 0; a < Configurations.Length; a++)
                            {
                                GenerateTasksMinGW(ref vcTasks, Name, Configurations[a], Platfroms[i]);
                            }
                        }

                        File.WriteAllText(Path.Combine(VCDirectory, "tasks.json"), JsonConvert.SerializeObject(vcTasks, Formatting.Indented));
                    }
                    {
                        VCLaunch vcLaunch = new VCLaunch();
                        GenerateLaunchMinGW(ref vcLaunch, "Debug", "debug");
                        GenerateLaunchMinGW(ref vcLaunch, "Mixed", "mixed");
                        GenerateLaunchMinGW(ref vcLaunch, "Release", "");
                        File.WriteAllText(Path.Combine(VCDirectory, "launch.json"), JsonConvert.SerializeObject(vcLaunch, Formatting.Indented));
                    }
                }
            }

            else
            {
                {
                }
            }
        }