diff options
author | Karsten Heimrich <karsten.heimrich@qt.io> | 2023-12-15 11:23:19 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@qt.io> | 2024-01-16 10:31:31 +0000 |
commit | 1f3c620a0692bf861ed29f2d591487db0c294ae8 (patch) | |
tree | f310d12fab3f7d20b686d4de1c4edeffc07d113a | |
parent | 86681eb5c3362765bba8037b038aec6ac3e3809d (diff) |
Adapt wizard template code to cppwinrt templates
Change-Id: I3f30da062d41ceb782042184538ee93b998125a9
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
-rw-r--r-- | QtVsTools.Core/BuildConfig.cs | 5 | ||||
-rw-r--r-- | QtVsTools.Core/ProjectImport/ProjectImporter.cs | 9 | ||||
-rw-r--r-- | QtVsTools.Core/VersionInformation.cs | 96 | ||||
-rw-r--r-- | QtVsTools.Wizards/ProjectWizard/ProjectTemplateWizard.cs | 12 |
4 files changed, 56 insertions, 66 deletions
diff --git a/QtVsTools.Core/BuildConfig.cs b/QtVsTools.Core/BuildConfig.cs index a19f051a..6952c3d9 100644 --- a/QtVsTools.Core/BuildConfig.cs +++ b/QtVsTools.Core/BuildConfig.cs @@ -16,5 +16,10 @@ namespace QtVsTools.Core #else #error Unknown Visual Studio version! #endif + + // Since Visual Studio 2019: WindowsTargetPlatformVersion=10.0 + // will be treated as "use latest installed Windows 10 SDK". + // https://developercommunity.visualstudio.com/comments/407752/view.html + public static string WindowsTargetPlatformVersion = "10.0"; } } diff --git a/QtVsTools.Core/ProjectImport/ProjectImporter.cs b/QtVsTools.Core/ProjectImport/ProjectImporter.cs index 1d5b26cb..46be0cfc 100644 --- a/QtVsTools.Core/ProjectImport/ProjectImporter.cs +++ b/QtVsTools.Core/ProjectImport/ProjectImporter.cs @@ -259,13 +259,8 @@ namespace QtVsTools.Core var ok = xmlProject.ConvertCustomBuildToQtMsBuild(); if (ok) ok = xmlProject.EnableMultiProcessorCompilation(); - if (ok) { - // Since Visual Studio 2019: WindowsTargetPlatformVersion=10.0 - // will be treated as "use latest installed Windows 10 SDK". - // https://developercommunity.visualstudio.com/comments/407752/view.html - const string versionWin10Sdk = "10.0"; - ok = xmlProject.SetDefaultWindowsSDKVersion(versionWin10Sdk); - } + if (ok) + ok = xmlProject.SetDefaultWindowsSDKVersion(BuildConfig.WindowsTargetPlatformVersion); if (ok) ok = xmlProject.UpdateProjectFormatVersion(oldVersion); diff --git a/QtVsTools.Core/VersionInformation.cs b/QtVsTools.Core/VersionInformation.cs index 868e1e55..1deb4b34 100644 --- a/QtVsTools.Core/VersionInformation.cs +++ b/QtVsTools.Core/VersionInformation.cs @@ -52,12 +52,50 @@ namespace QtVsTools.Core return versionInfo; } - public string VC_MinimumVisualStudioVersion { get; } - public string VC_ApplicationTypeRevision { get; } - public string VC_WindowsTargetPlatformMinVersion { get; } - public string VC_WindowsTargetPlatformVersion { get; } - public string VC_Link_TargetMachine { get; } - private string VC_PlatformToolset { get; } + private string vcLinkTargetMachine; + public string VC_Link_TargetMachine + { + get + { + if (!string.IsNullOrEmpty(vcLinkTargetMachine)) + return vcLinkTargetMachine; + + // Get VS project settings + try { + var tempProData = new StringBuilder(); + tempProData.AppendLine("SOURCES = main.cpp"); + + var modules = QtModules.Instance.GetAvailableModules(qtMajor) + .Where(mi => mi.Selectable).ToList(); + + foreach (var mi in modules) { + tempProData.AppendLine(string.Format( + "qtHaveModule({0}): HEADERS += {0}.h", mi.proVarQT)); + } + + var randomName = Path.GetRandomFileName(); + var tempDir = Path.Combine(Path.GetTempPath(), randomName); + Directory.CreateDirectory(tempDir); + + var tempPro = Path.Combine(tempDir, $"{randomName}.pro"); + File.WriteAllText(tempPro, tempProData.ToString()); + + var qmake = new QMakeImport(this, tempPro, disableWarnings: true); + if (qmake.Run(setVCVars: true) == 0) { + var tempVcxproj = Path.Combine(tempDir, $"{randomName}.vcxproj"); + var msbuildProj = MsBuildProjectReaderWriter.Load(tempVcxproj); + + Directory.Delete(tempDir, recursive: true); + + vcLinkTargetMachine = msbuildProj.GetProperty("Link", "TargetMachine"); + } + } catch (Exception exception) { + exception.Log(); + vcLinkTargetMachine = null; + } + return vcLinkTargetMachine; + } + } private VersionInformation(string qtDirIn) { @@ -101,52 +139,6 @@ namespace QtVsTools.Core } catch { } } catch { qtDir = null; - return; - } - - // Get VS project settings - try { - var tempProData = new StringBuilder(); - tempProData.AppendLine("SOURCES = main.cpp"); - - var modules = QtModules.Instance.GetAvailableModules(qtMajor) - .Where(mi => mi.Selectable).ToList(); - - foreach (QtModule mi in modules) { - tempProData.AppendLine(string.Format( - "qtHaveModule({0}): HEADERS += {0}.h", mi.proVarQT)); - } - - var randomName = Path.GetRandomFileName(); - var tempDir = Path.Combine(Path.GetTempPath(), randomName); - Directory.CreateDirectory(tempDir); - - var tempPro = Path.Combine(tempDir, $"{randomName}.pro"); - File.WriteAllText(tempPro, tempProData.ToString()); - - var qmake = new QMakeImport(this, tempPro, disableWarnings: true); - qmake.Run(setVCVars: true); - - var tempVcxproj = Path.Combine(tempDir, $"{randomName}.vcxproj"); - var msbuildProj = MsBuildProjectReaderWriter.Load(tempVcxproj); - - Directory.Delete(tempDir, recursive: true); - - VC_MinimumVisualStudioVersion = - msbuildProj.GetProperty("MinimumVisualStudioVersion"); - VC_ApplicationTypeRevision = - msbuildProj.GetProperty("ApplicationTypeRevision"); - VC_WindowsTargetPlatformVersion = - msbuildProj.GetProperty("WindowsTargetPlatformVersion"); - VC_WindowsTargetPlatformMinVersion = - msbuildProj.GetProperty("WindowsTargetPlatformMinVersion"); - VC_PlatformToolset = - msbuildProj.GetProperty("PlatformToolset"); - VC_Link_TargetMachine = - msbuildProj.GetProperty("Link", "TargetMachine"); - - } catch (Exception e) { - throw new QtVSException("Error reading VS project settings", e); } } diff --git a/QtVsTools.Wizards/ProjectWizard/ProjectTemplateWizard.cs b/QtVsTools.Wizards/ProjectWizard/ProjectTemplateWizard.cs index 85817045..777893eb 100644 --- a/QtVsTools.Wizards/ProjectWizard/ProjectTemplateWizard.cs +++ b/QtVsTools.Wizards/ProjectWizard/ProjectTemplateWizard.cs @@ -387,13 +387,11 @@ namespace QtVsTools.Wizards.ProjectWizard // foreach (IWizardConfiguration c in Configurations .Where(c => c.Target.EqualTo(ProjectTargets.Windows))) { - if (!string.IsNullOrEmpty(c.QtVersion.VC_WindowsTargetPlatformVersion)) { xml.AppendLine(string.Format(@" <WindowsTargetPlatformVersion Condition=""'$(Configuration)|$(Platform)' == '{0}|{1}'"">{2}</WindowsTargetPlatformVersion>", /*{0}*/ c.Name, /*{1}*/ c.Platform, - /*{2}*/ c.QtVersion.VC_WindowsTargetPlatformVersion)); - } + /*{2}*/ BuildConfig.WindowsTargetPlatformVersion)); } /////////////////////////////////////////////////////////////////////////////////////// @@ -411,10 +409,10 @@ namespace QtVsTools.Wizards.ProjectWizard <AppContainerApplication Condition=""'$(Configuration)|$(Platform)' == '{0}|{1}'"">true</AppContainerApplication>", /*{0}*/ c.Name, /*{1}*/ c.Platform, - /*{2}*/ c.QtVersion.VC_WindowsTargetPlatformVersion, - /*{3}*/ c.QtVersion.VC_WindowsTargetPlatformMinVersion, - /*{4}*/ c.QtVersion.VC_MinimumVisualStudioVersion, - /*{5}*/ c.QtVersion.VC_ApplicationTypeRevision)); + /*{2}*/ BuildConfig.WindowsTargetPlatformVersion, + /*{3}*/ "10.0.17134.0", // windows target platform min version + /*{4}*/ "15.0", // minimum Visual Studio version + /*{5}*/ "10.0")); // application type revision } /////////////////////////////////////////////////////////////////////////////////////// |