aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config/12.0/source.extension.vsixmanifest_TT3
-rw-r--r--src/qtmsbuild/Qt.props59
-rw-r--r--src/qtmsbuild/QtMSBuild.csproj6
-rw-r--r--src/qtmsbuild/qt.targets8
-rw-r--r--src/qtmsbuild/qt_private.props3
-rw-r--r--src/qtmsbuild/qt_settings.xml1
-rw-r--r--src/qtmsbuild/qt_settings_vs2015.xml1
-rw-r--r--src/qttemplates/console/console.vcxproj11
-rw-r--r--src/qttemplates/designer/designer.vcxproj11
-rw-r--r--src/qttemplates/empty/empty.vcxproj11
-rw-r--r--src/qttemplates/gui/gui.vcxproj11
-rw-r--r--src/qttemplates/lib/lib.vcxproj11
-rw-r--r--src/qttemplates/quick/quick.vcxproj11
-rw-r--r--src/qttemplates/server/server.vcxproj11
-rw-r--r--src/qtvstools.core/Resources.cs2
-rw-r--r--src/qtvstools/QtVsTools.csproj10
-rw-r--r--src/qtvstools/Vsix.cs41
-rw-r--r--src/qtwizard/Wizards/ProjectWizard/ProjectTemplateWizard.cs1
18 files changed, 156 insertions, 56 deletions
diff --git a/src/config/12.0/source.extension.vsixmanifest_TT b/src/config/12.0/source.extension.vsixmanifest_TT
index f8870814..9ec4a28c 100644
--- a/src/config/12.0/source.extension.vsixmanifest_TT
+++ b/src/config/12.0/source.extension.vsixmanifest_TT
@@ -139,6 +139,9 @@
Type="File" d:Source="File" Path="qtmsbuild\qt.props"
d:VsixSubPath="qtmsbuild" />
<Asset
+ Type="File" d:Source="File" Path="qtmsbuild\qt_private.props"
+ d:VsixSubPath="qtmsbuild" />
+ <Asset
Type="File" d:Source="File" Path="qtmsbuild\qt.targets"
d:VsixSubPath="qtmsbuild" />
<Asset
diff --git a/src/qtmsbuild/Qt.props b/src/qtmsbuild/Qt.props
new file mode 100644
index 00000000..3ad337af
--- /dev/null
+++ b/src/qtmsbuild/Qt.props
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt VS Tools.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+-->
+<!--
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Item type definition and default values
+// -->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Import private Qt property definitions
+ // -->
+ <ImportGroup Label="Qt">
+ <Import Project="$(MSBuildThisFileDirectory)\qt_private.props"/>
+ </ImportGroup>
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // User-defined settings
+ // -->
+ <PropertyGroup Label="UserMacros">
+ <!-- Placeholder for user macros written by VS Property Manager -->
+ </PropertyGroup>
+ <PropertyGroup>
+ <!-- Placeholder for properties written by VS Property Manager -->
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <!-- Placeholder for default metadata written by VS Property Manager -->
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <!-- Placeholder for items written by VS Property Manager -->
+ </ItemGroup>
+</Project>
diff --git a/src/qtmsbuild/QtMSBuild.csproj b/src/qtmsbuild/QtMSBuild.csproj
index 84ec9583..3407e054 100644
--- a/src/qtmsbuild/QtMSBuild.csproj
+++ b/src/qtmsbuild/QtMSBuild.csproj
@@ -50,7 +50,11 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>
- <Content Include="qt.props">
+ <Content Include="Qt.props">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ <SubType>Designer</SubType>
+ </Content>
+ <Content Include="qt_private.props">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
</Content>
diff --git a/src/qtmsbuild/qt.targets b/src/qtmsbuild/qt.targets
index 0d9b2fc6..3a99ed22 100644
--- a/src/qtmsbuild/qt.targets
+++ b/src/qtmsbuild/qt.targets
@@ -36,6 +36,14 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
+ // Fail-safe import of private definitions
+ // -->
+ <Import
+ Condition="'$(QtPrivateLoaded)' != 'true'"
+ Project="$(MSBuildThisFileDirectory)\qt_private.props"/>
+
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
// Defaults for project version constants
// -->
<PropertyGroup>
diff --git a/src/qtmsbuild/qt_private.props b/src/qtmsbuild/qt_private.props
index 159d2dc7..a0bb3b70 100644
--- a/src/qtmsbuild/qt_private.props
+++ b/src/qtmsbuild/qt_private.props
@@ -34,6 +34,9 @@
// Item type definition and default values
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <QtPrivateLoaded>true</QtPrivateLoaded>
+ </PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/qtmsbuild/qt_settings.xml b/src/qtmsbuild/qt_settings.xml
index e8b53546..b6a25d93 100644
--- a/src/qtmsbuild/qt_settings.xml
+++ b/src/qtmsbuild/qt_settings.xml
@@ -59,6 +59,7 @@
<EnumValue Name="QtVS_v301" DisplayName="Version 3.1"/>
<EnumValue Name="QtVS_v302" DisplayName="Version 3.2"/>
<EnumValue Name="QtVS_v303" DisplayName="Version 3.3"/>
+ <EnumValue Name="QtVS_v304" DisplayName="Version 3.4"/>
</EnumProperty>
<DynamicEnumProperty
Name="QtInstall"
diff --git a/src/qtmsbuild/qt_settings_vs2015.xml b/src/qtmsbuild/qt_settings_vs2015.xml
index a42f9bfd..4170d399 100644
--- a/src/qtmsbuild/qt_settings_vs2015.xml
+++ b/src/qtmsbuild/qt_settings_vs2015.xml
@@ -59,6 +59,7 @@
<EnumValue Name="QtVS_v301" DisplayName="Version 3.1"/>
<EnumValue Name="QtVS_v302" DisplayName="Version 3.2"/>
<EnumValue Name="QtVS_v303" DisplayName="Version 3.3"/>
+ <EnumValue Name="QtVS_v304" DisplayName="Version 3.4"/>
</EnumProperty>
<DynamicEnumProperty
Name="QtInstall"
diff --git a/src/qttemplates/console/console.vcxproj b/src/qttemplates/console/console.vcxproj
index bbb86c5a..fbd4048a 100644
--- a/src/qttemplates/console/console.vcxproj
+++ b/src/qttemplates/console/console.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<ClCompile Include="main.cpp" />
diff --git a/src/qttemplates/designer/designer.vcxproj b/src/qttemplates/designer/designer.vcxproj
index 0ecc97b8..f32dc6e3 100644
--- a/src/qttemplates/designer/designer.vcxproj
+++ b/src/qttemplates/designer/designer.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<QtMoc Include="$headerfilename$"/>
diff --git a/src/qttemplates/empty/empty.vcxproj b/src/qttemplates/empty/empty.vcxproj
index 658b695e..70c2cef5 100644
--- a/src/qttemplates/empty/empty.vcxproj
+++ b/src/qttemplates/empty/empty.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
$ProjectItems$
diff --git a/src/qttemplates/gui/gui.vcxproj b/src/qttemplates/gui/gui.vcxproj
index 0bd31e55..58731f3c 100644
--- a/src/qttemplates/gui/gui.vcxproj
+++ b/src/qttemplates/gui/gui.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<QtRcc Include="$qrcfilename$"/>
diff --git a/src/qttemplates/lib/lib.vcxproj b/src/qttemplates/lib/lib.vcxproj
index 44b7ee57..e3f38124 100644
--- a/src/qttemplates/lib/lib.vcxproj
+++ b/src/qttemplates/lib/lib.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<ClInclude Include="$saveglobal$_global.h"/>
diff --git a/src/qttemplates/quick/quick.vcxproj b/src/qttemplates/quick/quick.vcxproj
index 68f9ed6c..17f6b66a 100644
--- a/src/qttemplates/quick/quick.vcxproj
+++ b/src/qttemplates/quick/quick.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<ClCompile Include="main.cpp"/>
diff --git a/src/qttemplates/server/server.vcxproj b/src/qttemplates/server/server.vcxproj
index a83c5ff9..b2a0d838 100644
--- a/src/qttemplates/server/server.vcxproj
+++ b/src/qttemplates/server/server.vcxproj
@@ -13,6 +13,10 @@ $Globals$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
$Configurations$
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+ <Import Project="$(QtMsBuild)\qt_defaults.props" />
+ </ImportGroup>
+$QtSettings$
<Target Name="QtMsBuildNotFound"
BeforeTargets="CustomBuild;ClCompile"
Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
@@ -23,14 +27,7 @@ $Configurations$
<ImportGroup Label="Shared" />
$PropertySheets$
<PropertyGroup Label="UserMacros" />
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
- <Import Project="$(QtMsBuild)\qt_defaults.props" />
- </ImportGroup>
$Properties$
-$QtSettings$
- <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
- <Import Project="$(QtMsBuild)\qt.props" />
- </ImportGroup>
$BuildSettings$
<ItemGroup>
<QtUic Include="$uifilename$" />
diff --git a/src/qtvstools.core/Resources.cs b/src/qtvstools.core/Resources.cs
index be807610..2bfced2b 100644
--- a/src/qtvstools.core/Resources.cs
+++ b/src/qtvstools.core/Resources.cs
@@ -83,7 +83,7 @@ namespace QtVsTools.Core
// Qt VS project tag and format version
public const string qtProjectKeyword = "QtVS";
- public const int qtProjectFormatVersion = 303;
+ public const int qtProjectFormatVersion = 304;
public static string QtVSVersionTag
=> string.Format("{0}_v{1}", qtProjectKeyword, qtProjectFormatVersion);
diff --git a/src/qtvstools/QtVsTools.csproj b/src/qtvstools/QtVsTools.csproj
index 1ec1d62a..af71661e 100644
--- a/src/qtvstools/QtVsTools.csproj
+++ b/src/qtvstools/QtVsTools.csproj
@@ -577,8 +577,14 @@
<IncludeInVSIX>true</IncludeInVSIX>
<SubType>Designer</SubType>
</Content>
- <Content Include="..\qtmsbuild\qt.props">
- <Link>QtMsBuild\qt.props</Link>
+ <Content Include="..\qtmsbuild\Qt.props">
+ <Link>QtMsBuild\Qt.props</Link>
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ <IncludeInVSIX>true</IncludeInVSIX>
+ <SubType>Designer</SubType>
+ </Content>
+ <Content Include="..\qtmsbuild\qt_private.props">
+ <Link>QtMsBuild\qt_private.props</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<IncludeInVSIX>true</IncludeInVSIX>
<SubType>Designer</SubType>
diff --git a/src/qtvstools/Vsix.cs b/src/qtvstools/Vsix.cs
index 298e97b4..7a40e2a7 100644
--- a/src/qtvstools/Vsix.cs
+++ b/src/qtvstools/Vsix.cs
@@ -130,6 +130,8 @@ namespace QtVsTools
static EventWaitHandle initDone = new EventWaitHandle(false, EventResetMode.ManualReset);
static Vsix instance = null;
+ const StringComparison IGNORE_CASE = StringComparison.InvariantCultureIgnoreCase;
+
/// <summary>
/// Gets the instance of the package.
/// </summary>
@@ -223,6 +225,10 @@ namespace QtVsTools
PkgInstallPath = Path.GetDirectoryName(
Uri.UnescapeDataString(uri.AbsolutePath)) + @"\";
+ ///////////
+ // Install Qt/MSBuild files from package folder to standard location
+ // -> %LOCALAPPDATA%\QtMsBuild
+ //
var QtMsBuildDefault = Path.Combine(
Environment.GetEnvironmentVariable("LocalAppData"), "QtMsBuild");
try {
@@ -239,16 +245,45 @@ namespace QtVsTools
var targetPathTemp = targetPath + ".tmp";
Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
File.Copy(sourcePath, targetPathTemp, overwrite: true);
- if (File.Exists(targetPath))
- File.Replace(targetPathTemp, targetPath, null);
- else
+ ////////
+ // Copy Qt/MSBuild files to standard location, taking care not to
+ // overwrite the updated Qt props file, possibly containing user-defined
+ // build settings (written by the VS Property Manager). This file is
+ // recognized as being named "Qt.props" and containing the import
+ // statement for qt_private.props.
+ //
+ string qtPrivateImport =
+ @"<Import Project=""$(MSBuildThisFileDirectory)\qt_private.props""";
+ Func<string, bool> isUpdateQtProps = (string filePath) =>
+ {
+ return Path.GetFileName(targetPath).Equals("Qt.props", IGNORE_CASE)
+ && File.ReadAllText(targetPath).Contains(qtPrivateImport);
+ };
+ if (!File.Exists(targetPath)) {
+ // Target file does not exist
+ // -> Create new
File.Move(targetPathTemp, targetPath);
+ } else if (!isUpdateQtProps(targetPath)) {
+ // Target file is not the updated Qt.props
+ // -> Overwrite
+ File.Replace(targetPathTemp, targetPath, null);
+ } else {
+ // Target file *is* the updated Qt.props; skip!
+ // -> Remove temp file
+ File.Delete(targetPathTemp);
+ }
}
}
} catch {
+ /////////
+ // Error copying files to standard location.
+ // -> FAIL-SAFE: use source folder (within package) as the standard location
QtMsBuildDefault = Path.Combine(PkgInstallPath, "QtMsBuild");
}
+ ///////
+ // Set %QTMSBUILD% by default to point to standard location of Qt/MSBuild
+ //
var QtMsBuildPath = Environment.GetEnvironmentVariable("QtMsBuild");
if (string.IsNullOrEmpty(QtMsBuildPath))
{
diff --git a/src/qtwizard/Wizards/ProjectWizard/ProjectTemplateWizard.cs b/src/qtwizard/Wizards/ProjectWizard/ProjectTemplateWizard.cs
index ca9f7d9a..dca0dafd 100644
--- a/src/qtwizard/Wizards/ProjectWizard/ProjectTemplateWizard.cs
+++ b/src/qtwizard/Wizards/ProjectWizard/ProjectTemplateWizard.cs
@@ -447,6 +447,7 @@ namespace QtVsTools.Wizards.ProjectWizard
xml.AppendLine(string.Format(@"
<ImportGroup Label=""PropertySheets"" Condition=""'$(Configuration)|$(Platform)' == '{0}|{1}'"">
<Import Project=""$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"" Condition=""exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')"" Label=""LocalAppDataPlatform"" />
+ <Import Project=""$(QtMsBuild)\Qt.props"" />
</ImportGroup>",
/*{0}*/ c.Name,
/*{1}*/ c.Platform));