Ejemplo n.º 1
0
        void BuildNewFilters()
        {
            Filters.Project filters = new Filters.Project();
            filters.itemGroup.AppendFilter("include");
            filters.itemGroup.AppendFilter("source");

            List <string> SourceFie   = new List <string>();
            List <string> IncludeFile = new List <string>();

            GenerateProjectFile.GetSource(Name, ref SourceFie);
            GenerateProjectFile.GetIncludeFile(Name, ref IncludeFile);



            foreach (var ji in SourceFie)
            {
                filters.itemGroup.AppendClCompile(ji, "source");
            }
            foreach (var ji in IncludeFile)
            {
                filters.itemGroup.AppendClInclude(ji, "include");
            }
            try { File.Delete(FileFilters); } catch { };
            filters.Save(FileFilters);
        }
Ejemplo n.º 2
0
        public static void CreateFilters(string File, string Project, string Out = null)
        {
            GenerateProjectFile GenerateProjectFile = new GenerateProjectFile();

            GenerateProjectFile.RegisterProject(Project);

            List <string> SourceFie     = new List <string>();
            List <string> IncludeFile   = new List <string>();
            List <string> ResourceFiles = new List <string>();


            GenerateProjectFile.GetResourceFile(Project, ref ResourceFiles);
            GenerateProjectFile.GetSource(Project, ref SourceFie);
            GenerateProjectFile.GetIncludeFile(Project, ref IncludeFile);

            Filters.Project filetrs = new Filters.Project();
            if (!filetrs.Load(File))
            {
                Console.WriteLine("Ошибка не удалось загрузить " + File);
            }
            foreach (Filters.ClCompile i in filetrs.itemGroup.ClCompilers)
            {
                List <string> list = new List <string>();
                foreach (string a in SourceFie)
                {
                    if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                    {
                        list.Add(a);
                    }
                }
                GetFile(ref list, ref i.Include);
            }
            for (int i = filetrs.itemGroup.ClCompilers.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.ClCompilers[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.ClCompilers.RemoveAt(i);
                }
            }
            foreach (Filters.ClInclude i in filetrs.itemGroup.ClIncludes)
            {
                List <string> list = new List <string>();
                foreach (string a in IncludeFile)
                {
                    if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                    {
                        list.Add(a);
                    }
                }
                GetFile(ref list, ref i.Include);
            }
            for (int i = filetrs.itemGroup.ClIncludes.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.ClIncludes[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.ClIncludes.RemoveAt(i);
                }
            }
            bool b1 = false, b2 = false;

            foreach (Filters.None i in filetrs.itemGroup.Nones)
            {
                if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(GenerateProjectFile.PathFileInfo[Project]).ToLower())
                {
                    List <string> list = new List <string>();
                    list.Add(GenerateProjectFile.PathFileInfo[Project]);
                    if (b1)
                    {
                        continue;
                    }
                    GetFile(ref list, ref i.Include);
                    b1 = true;
                }
                else
                if (ResourceFiles.Count != 0)
                {
                    foreach (string a in ResourceFiles)
                    {
                        if (Path.GetFileName(i.Include).ToLower() == Path.GetFileName(a).ToLower())
                        {
                            List <string> list = new List <string>();
                            list.Add(a);
                            if (b2)
                            {
                                continue;
                            }
                            GetFile(ref list, ref i.Include);
                            b2 = true;
                        }
                        else
                        {
                            i.Include = " УДАЛИТЬ.УДАЛИТЬ";
                        }
                    }
                }
                else
                {
                    i.Include = " УДАЛИТЬ.УДАЛИТЬ";
                }
            }
            for (int i = filetrs.itemGroup.Nones.Count - 1; i >= 0; i--)
            {
                if (filetrs.itemGroup.Nones[i].Include == " УДАЛИТЬ.УДАЛИТЬ")
                {
                    filetrs.itemGroup.Nones.RemoveAt(i);
                }
            }
            string FiltersInProject = String.Empty;

            {
                string path = Path.GetDirectoryName(GenerateProjectFile.PathFileInfo[Project]);
                FiltersInProject = Path.Combine(path, Project + ".vcxproj.filters");
            }
            {
                Dictionary <string, bool> paths = new Dictionary <string, bool>();
                foreach (Filters.ClCompile i in filetrs.itemGroup.ClCompilers)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.ClInclude i in filetrs.itemGroup.ClIncludes)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.None i in filetrs.itemGroup.Nones)
                {
                    if (paths.ContainsKey(i.Filter) == false)
                    {
                        paths.Add(i.Filter, true);
                    }
                }
                foreach (Filters.Filter i in filetrs.itemGroup.Filters)
                {
                    if (paths.ContainsKey(i.Include) == true)
                    {
                        int offset = i.Include.LastIndexOf('\\');
                        if (offset == -1)
                        {
                            continue;
                        }
                        string in_path = i.Include.Remove(offset);

                        if (paths.ContainsKey(in_path) == false)
                        {
                            paths.Add(in_path, true);
                        }
                    }
                }
                for (int i = filetrs.itemGroup.Filters.Count - 1; i >= 0; i--)
                {
                    if (paths.ContainsKey(filetrs.itemGroup.Filters[i].Include) == false)
                    {
                        filetrs.itemGroup.Filters.RemoveAt(i);
                    }
                }
            }
            filetrs.Save(Out != null? Out: FiltersInProject);
        }