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