예제 #1
0
        void SolutionEvents_Opened()
        {
            foreach (var p in HelperFunctions.ProjectsInSolution(Vsix.Instance.Dte))
            {
                if (HelperFunctions.IsQtProject(p))
                {
                    InitializeVCProject(p);
#if VS2017 || VS2019
                    QtProjectTracker.AddProject(p);
#endif
                }
            }
        }
예제 #2
0
        void SolutionEvents_ProjectAdded(Project project)
        {
            if (HelperFunctions.IsQMakeProject(project))
            {
                InitializeVCProject(project);
#if VS2017 || VS2019
                QtProjectTracker.AddProject(project);
#endif
                var      vcpro  = project.Object as VCProject;
                VCFilter filter = null;
                foreach (VCFilter f in vcpro.Filters as IVCCollection)
                {
                    if (f.Name == Filters.HeaderFiles().Name)
                    {
                        filter = f;
                        break;
                    }
                }
                if (filter != null)
                {
                    foreach (VCFile file in filter.Files as IVCCollection)
                    {
                        foreach (VCFileConfiguration config in file.FileConfigurations as IVCCollection)
                        {
                            var tool        = new QtCustomBuildTool(config);
                            var commandLine = tool.CommandLine;
                            if (!string.IsNullOrEmpty(commandLine) && commandLine.Contains("moc.exe"))
                            {
                                var    matches = Regex.Matches(commandLine, "[^ ^\n]+moc\\.(exe\"|exe)");
                                string qtDir;
                                if (matches.Count != 1)
                                {
                                    var vm = QtVersionManager.The();
                                    qtDir = vm.GetInstallPath(vm.GetDefaultVersion());
                                }
                                else
                                {
                                    qtDir = matches[0].ToString().Trim('"');
                                    qtDir = qtDir.Remove(qtDir.LastIndexOf('\\'));
                                    qtDir = qtDir.Remove(qtDir.LastIndexOf('\\'));
                                }
                                qtDir = qtDir.Replace("_(QTDIR)", "$(QTDIR)");
                                HelperFunctions.SetDebuggingEnvironment(project, "PATH="
                                                                        + Path.Combine(qtDir, "bin") + ";$(PATH)", false, config.Name);
                            }
                        }
                    }
                }
            }
        }
예제 #3
0
파일: Vsix.cs 프로젝트: freall/vstools
        void IProjectTracker.AddProject(Project project)
        {
#if VS2017 || VS2019
            QtProjectTracker.AddProject(project);
#endif
        }