From 34cb20862559eed3225fb0875b01aace38cbd3b6 Mon Sep 17 00:00:00 2001 From: giy <giy@omp-system.ru> Date: Thu, 19 Jan 2023 13:19:17 +0300 Subject: [PATCH] Правки генерации и удаления moc файлов: 1) Теперь в фильтре проекта GeneratedFiles создаются подфильтры для каждой конфигурации и платформы (актуально для конфигов CODE64). 2) Исправлено добавление и удаление moc конфигураций в vcxproj и vcxproj.filter файлах проектов (в старой версии плагина с этим была проблема и как следствие - возникали ошибки сборки связанные с moc'ами). 3) Теперь при выключении сборки проекта в Solution Property -> Configuration Properties для определенной конфигурации и разрядности не будут генерироватся moc файлы. --- QtVsTools.Core/HelperFunctions.cs | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/QtVsTools.Core/HelperFunctions.cs b/QtVsTools.Core/HelperFunctions.cs index a07fa89..552099c 100644 --- a/QtVsTools.Core/HelperFunctions.cs +++ b/QtVsTools.Core/HelperFunctions.cs @@ -47,6 +47,8 @@ namespace QtVsTools.Core { + using System.Runtime.Remoting.Contexts; + using EnvDTE80; using QtMsBuild; public static class HelperFunctions @@ -764,6 +766,8 @@ var excluded = false; var fileConfigurations = (IVCCollection)vcfile.FileConfigurations; foreach (VCFileConfiguration config in fileConfigurations) { + if (IsConfExcludeFromSolution(config)) + continue; if (config.ExcludedFromBuild && config.MatchName(configurationName, false)) { excluded = true; break; @@ -1609,5 +1613,30 @@ path += "\\"; return string.Format("\"{0}\"", path); } + + public static bool IsConfExcludeFromSolution(VCFileConfiguration fileConfig) + { + ThreadHelper.ThrowIfNotOnUIThread(); + + var projectConfig = fileConfig.ProjectConfiguration as VCConfiguration; + var projectPlatform = projectConfig.Platform as VCPlatform; + var project = projectConfig.project as VCProject; + var projectEnv = project.Object as Project; + var dteEnv = projectEnv.DTE as DTE; + + var contextList = new List<SolutionContext>(); + foreach (SolutionConfiguration2 solutionCfg in dteEnv.Solution.SolutionBuild.SolutionConfigurations) { + if (solutionCfg.PlatformName == projectPlatform.Name && solutionCfg.Name == projectConfig.ConfigurationName) { + foreach (SolutionContext context in solutionCfg.SolutionContexts) { + if (context.ProjectName.Contains(project.Name + ".vcxproj")) { + // ������ ��������� ����� ��������� ������ ���� SolutionContext + // �������� ����� �������� �������� ����� + contextList.Add(context); + } + } + } + } + return !contextList[0].ShouldBuild; + } } } -- Gitblit v1.9.1