aboutsummaryrefslogtreecommitdiffstats
path: root/src/qtmsbuild
diff options
context:
space:
mode:
Diffstat (limited to 'src/qtmsbuild')
-rw-r--r--src/qtmsbuild/moc/qtmoc.props17
-rw-r--r--src/qtmsbuild/moc/qtmoc.targets28
-rw-r--r--src/qtmsbuild/moc/qtmoc.xml10
-rw-r--r--src/qtmsbuild/moc/qtmoc_settings.xml68
-rw-r--r--src/qtmsbuild/qml/qtqml.targets15
-rw-r--r--src/qtmsbuild/rcc/qtrcc.props17
-rw-r--r--src/qtmsbuild/rcc/qtrcc.targets29
-rw-r--r--src/qtmsbuild/rcc/qtrcc.xml10
-rw-r--r--src/qtmsbuild/rcc/qtrcc_settings.xml67
-rw-r--r--src/qtmsbuild/repc/qtrepc.props3
-rw-r--r--src/qtmsbuild/repc/qtrepc.targets3
-rw-r--r--src/qtmsbuild/uic/qtuic.props17
-rw-r--r--src/qtmsbuild/uic/qtuic.targets34
-rw-r--r--src/qtmsbuild/uic/qtuic.xml10
-rw-r--r--src/qtmsbuild/uic/qtuic_settings.xml67
15 files changed, 377 insertions, 18 deletions
diff --git a/src/qtmsbuild/moc/qtmoc.props b/src/qtmsbuild/moc/qtmoc.props
index 6f7c9b8e..9d1be76b 100644
--- a/src/qtmsbuild/moc/qtmoc.props
+++ b/src/qtmsbuild/moc/qtmoc.props
@@ -48,9 +48,22 @@
<ItemDefinitionGroup>
<QtMoc>
<ExecutionDescription>moc %(Identity)</ExecutionDescription>
- <QTDIR>$(QTDIR)</QTDIR>
+
+ <QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(QTDIR)</QTDIR>
+ <QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtInstallDir)</QTDIR>
+
<InputFile>%(FullPath)</InputFile>
- <OutputFile>$(ProjectDir)GeneratedFiles\$(Configuration)\moc_%(Filename).cpp</OutputFile>
+
+ <OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(ProjectDir)GeneratedFiles\$(Configuration)\moc_%(Filename).cpp</OutputFile>
+
+ <QtMocDir Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(IntDir)\moc\%(RelativeDir)</QtMocDir>
+ <QtMocFileName Condition="'$(QtVsProjectSettings)' == 'true'"
+ >moc_%(Filename).cpp</QtMocFileName>
+
<DynamicSource>output</DynamicSource>
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
diff --git a/src/qtmsbuild/moc/qtmoc.targets b/src/qtmsbuild/moc/qtmoc.targets
index 5be67d17..acbdc89a 100644
--- a/src/qtmsbuild/moc/qtmoc.targets
+++ b/src/qtmsbuild/moc/qtmoc.targets
@@ -58,6 +58,9 @@
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtmoc.xml" />
+ <PropertyPageSchema
+ Condition="'$(QtVsProjectSettings)' == 'true'"
+ Include="$(MSBuildThisFileDirectory)qtmoc_settings.xml" />
<AvailableItemName Include="QtMoc">
<Targets>Qt;_ClCompile</Targets>
</AvailableItemName>
@@ -65,11 +68,29 @@
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
+ /// TARGET QtMocInit
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Initialize default metadata
+ // -->
+ <Target Name="QtMocInit">
+ <!--// Initialize %(OutputFile) -->
+ <ItemGroup Condition="'$(QtVsProjectSettings)' == 'true'">
+ <QtMocAux Include="@(QtMoc)">
+ <OutputFile>%(QtMoc.QtMocDir)\%(QtMoc.QtMocFileName)</OutputFile>
+ </QtMocAux>
+ <QtMoc Remove="@(QtMoc)"/>
+ <QtMoc Include="@(QtMocAux)"/>
+ <QtMocAux Remove="@(QtMocAux)"/>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMocPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare to process sources
// -->
- <Target Name="QtMocPrepare" DependsOnTargets="_SelectedFiles"
+ <Target Name="QtMocPrepare" DependsOnTargets="_SelectedFiles;QtMocInit"
Inputs="%(QtMoc.Identity)" Outputs="@(QtMoc->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
@@ -341,7 +362,10 @@
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtMoc)">
<WorkType>moc</WorkType>
- <ToolPath>%(QtMoc.QTDIR)\bin\moc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtToolsPath)\moc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
+ >%(QtMoc.QTDIR)\bin\moc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtMoc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
diff --git a/src/qtmsbuild/moc/qtmoc.xml b/src/qtmsbuild/moc/qtmoc.xml
index 148e2a51..04643059 100644
--- a/src/qtmsbuild/moc/qtmoc.xml
+++ b/src/qtmsbuild/moc/qtmoc.xml
@@ -77,6 +77,16 @@
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
+ Name="QtMocDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated moc output directory."
+ Visible="false"/>
+ <StringProperty
+ Name="QtMocFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated moc output file."
+ Visible="false"/>
+ <StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Input File"
diff --git a/src/qtmsbuild/moc/qtmoc_settings.xml b/src/qtmsbuild/moc/qtmoc_settings.xml
new file mode 100644
index 00000000..504a7506
--- /dev/null
+++ b/src/qtmsbuild/moc/qtmoc_settings.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/****************************************************************************
+**
+** Copyright (C) 2019 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$
+**
+****************************************************************************/
+-->
+<ProjectSchemaDefinitions
+ xmlns="http://schemas.microsoft.com/build/2009/properties"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:sys="clr-namespace:System;assembly=mscorlib">
+ <Rule
+ Name="QtRule30_Moc"
+ OverrideMode="Extend"
+ PageTemplate="tool"
+ DisplayName="Qt Meta-Object Compiler"
+ Order="9">
+ <Rule.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType="QtMoc" />
+ </Rule.DataSource>
+ <StringProperty
+ Name="QTDIR"
+ DisplayName="Qt Directory"
+ Description="Path to installation of Qt."
+ Visible="false"/>
+ <StringProperty
+ Name="InputFile"
+ DisplayName="Input File"
+ Visible="false"/>
+ <StringProperty
+ Name="OutputFile"
+ DisplayName="Output File"
+ Visible="false"/>
+ <StringProperty
+ Name="QtMocDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated moc output directory."/>
+ <StringProperty
+ Name="QtMocFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated moc output file."/>
+ </Rule>
+</ProjectSchemaDefinitions>
diff --git a/src/qtmsbuild/qml/qtqml.targets b/src/qtmsbuild/qml/qtqml.targets
index 03f85471..dfb9159d 100644
--- a/src/qtmsbuild/qml/qtqml.targets
+++ b/src/qtmsbuild/qml/qtqml.targets
@@ -302,7 +302,10 @@
AND '%(QtRccFilter.OtherResources)' != ''
AND '%(QtRccFilter.IsSelected)' == 'true'">
<WorkType>qmlcachegen_filter</WorkType>
- <ToolPath>%(QtRccFilter.QTDIR)\bin\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtToolsPath)\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
+ >%(QtRccFilter.QTDIR)\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<OutputFile>$(full_path)</OutputFile>
<Message>%(QtRccFilter.QmlCacheFilterMessage)</Message>
@@ -444,7 +447,10 @@
Condition="'@(loader_input)' != ''
AND $(is_selected.Contains('true'))">
<WorkType>qmlcachengen_loader</WorkType>
- <ToolPath>@(loader->'%(QTDIR)')\bin\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtToolsPath)\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
+ >@(loader->'%(QTDIR)')\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<OutputFile>@(loader->'%(QmlCacheLoaderFile)')</OutputFile>
<Message>@(loader->'%(QmlCacheLoaderMessage)')</Message>
@@ -570,7 +576,10 @@
Condition="'@(QtQml)' != ''
AND '%(QtQml.IsSelected)' == 'true'">
<WorkType>qmlcachegen</WorkType>
- <ToolPath>%(QtQml.QTDIR)\bin\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtToolsPath)\qmlcachegen.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
+ >%(QtQml.QTDIR)\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtQml.Message)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
diff --git a/src/qtmsbuild/rcc/qtrcc.props b/src/qtmsbuild/rcc/qtrcc.props
index 444bada6..f8985955 100644
--- a/src/qtmsbuild/rcc/qtrcc.props
+++ b/src/qtmsbuild/rcc/qtrcc.props
@@ -48,9 +48,22 @@
<ItemDefinitionGroup>
<QtRcc>
<ExecutionDescription>rcc %(Identity)</ExecutionDescription>
- <QTDIR>$(QTDIR)</QTDIR>
+
+ <QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(QTDIR)</QTDIR>
+ <QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtInstallDir)</QTDIR>
+
<InputFile>%(FullPath)</InputFile>
- <OutputFile>$(ProjectDir)GeneratedFiles\$(Configuration)\qrc_%(Filename).cpp</OutputFile>
+
+ <OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(ProjectDir)GeneratedFiles\$(Configuration)\qrc_%(Filename).cpp</OutputFile>
+
+ <QtRccDir Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(IntDir)\rcc\%(RelativeDir)</QtRccDir>
+ <QtRccFileName Condition="'$(QtVsProjectSettings)' == 'true'"
+ >qrc_%(Filename).cpp</QtRccFileName>
+
<InitFuncName>%(Filename)</InitFuncName>
<Compression>default</Compression>
<DynamicSource>output</DynamicSource>
diff --git a/src/qtmsbuild/rcc/qtrcc.targets b/src/qtmsbuild/rcc/qtrcc.targets
index 58393605..8082bf80 100644
--- a/src/qtmsbuild/rcc/qtrcc.targets
+++ b/src/qtmsbuild/rcc/qtrcc.targets
@@ -58,6 +58,9 @@
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtrcc.xml" />
+ <PropertyPageSchema
+ Condition="'$(QtVsProjectSettings)' == 'true'"
+ Include="$(MSBuildThisFileDirectory)qtrcc_settings.xml" />
<AvailableItemName Include="QtRcc">
<Targets>Qt;_ClCompile</Targets>
</AvailableItemName>
@@ -65,16 +68,35 @@
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
+ /// TARGET QtRccInit
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Initialize default metadata
+ // -->
+ <Target Name="QtRccInit">
+ <!--// Initialize %(OutputFile) -->
+ <ItemGroup Condition="'$(QtVsProjectSettings)' == 'true'">
+ <QtRccAux Include="@(QtRcc)">
+ <OutputFile>%(QtRcc.QtRccDir)\%(QtRcc.QtRccFileName)</OutputFile>
+ </QtRccAux>
+ <QtRcc Remove="@(QtRcc)"/>
+ <QtRcc Include="@(QtRccAux)"/>
+ <QtRccAux Remove="@(QtRccAux)"/>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccSetDependencies
/////////////////////////////////////////////////////////////////////////////////////////////////
// Add resource files as dependencies of the QRC file
// -->
- <Target Name="QtRccSetDependencies" DependsOnTargets="_SelectedFiles"
+ <Target Name="QtRccSetDependencies" DependsOnTargets="_SelectedFiles;QtRccInit"
Inputs="%(QtRcc.Identity)" Outputs="@(QtRcc->'####### Don't skip this target #######')">
<!--// Parse QRC -->
<PropertyGroup>
- <QtRccExeQuoted>&quot;%(QtRcc.QTDIR)\bin\rcc.exe&quot;</QtRccExeQuoted>
+ <QtRccExeQuoted Condition="'$(QtVsProjectSettings)' == 'true'">&quot;$(QtToolsPath)\rcc.exe&quot;</QtRccExeQuoted>
+ <QtRccExeQuoted Condition="'$(QtVsProjectSettings)' != 'true'">&quot;%(QtRcc.QTDIR)\bin\rcc.exe&quot;</QtRccExeQuoted>
<QtRccQuoted>&quot;%(QtRcc.Identity)&quot;</QtRccQuoted>
<RccListQuoted>&quot;$(IntDir)rcc_list.txt&quot;</RccListQuoted>
</PropertyGroup>
@@ -351,7 +373,8 @@
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtRcc)">
<WorkType>rcc</WorkType>
- <ToolPath>%(QtRcc.QTDIR)\bin\rcc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)\rcc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtRcc.QTDIR)\bin\rcc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtRcc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
diff --git a/src/qtmsbuild/rcc/qtrcc.xml b/src/qtmsbuild/rcc/qtrcc.xml
index 3738a201..a984f0bd 100644
--- a/src/qtmsbuild/rcc/qtrcc.xml
+++ b/src/qtmsbuild/rcc/qtrcc.xml
@@ -77,6 +77,16 @@
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
+ Name="QtRccDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated rcc output directory."
+ Visible="false"/>
+ <StringProperty
+ Name="QtRccFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated rcc output file."
+ Visible="false"/>
+ <StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Input File"
diff --git a/src/qtmsbuild/rcc/qtrcc_settings.xml b/src/qtmsbuild/rcc/qtrcc_settings.xml
new file mode 100644
index 00000000..ce904244
--- /dev/null
+++ b/src/qtmsbuild/rcc/qtrcc_settings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/****************************************************************************
+**
+** Copyright (C) 2019 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$
+**
+****************************************************************************/
+-->
+<ProjectSchemaDefinitions
+ xmlns="http://schemas.microsoft.com/build/2009/properties"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:sys="clr-namespace:System;assembly=mscorlib">
+ <Rule
+ Name="QtRule40_Rcc"
+ OverrideMode="Extend"
+ PageTemplate="tool"
+ DisplayName="Qt Resource Compiler"
+ Order="9">
+ <Rule.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType="QtRcc" />
+ </Rule.DataSource>
+ <StringProperty
+ Name="QTDIR"
+ DisplayName="Qt Directory"
+ Visible="false"/>
+ <StringProperty
+ Name="InputFile"
+ DisplayName="Input File"
+ Visible="false"/>
+ <StringProperty
+ Name="OutputFile"
+ DisplayName="Output File"
+ Visible="false"/>
+ <StringProperty
+ Name="QtRccDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated rcc output directory."/>
+ <StringProperty
+ Name="QtRccFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated rcc output file."/>
+ </Rule>
+</ProjectSchemaDefinitions>
diff --git a/src/qtmsbuild/repc/qtrepc.props b/src/qtmsbuild/repc/qtrepc.props
index ebf1dee8..0d81485c 100644
--- a/src/qtmsbuild/repc/qtrepc.props
+++ b/src/qtmsbuild/repc/qtrepc.props
@@ -49,7 +49,8 @@
<ItemDefinitionGroup>
<QtRepc>
<ExecutionDescription>repc %(Identity)</ExecutionDescription>
- <QTDIR>$(QTDIR)</QTDIR>
+ <QTDIR Condition="'$(QtVsProjectSettings)' == 'true'">$(QtInstallDir)</QTDIR>
+ <QTDIR Condition="'$(QtVsProjectSettings)' != 'true'">$(QTDIR)</QTDIR>
<InputFile>%(FullPath)</InputFile>
<OutputFileType>replica</OutputFileType>
<OutputFile><![CDATA[$(IntDir)\repc\rep_%(Filename)_%<OutputFileType>.h]]></OutputFile>
diff --git a/src/qtmsbuild/repc/qtrepc.targets b/src/qtmsbuild/repc/qtrepc.targets
index c8bd0bf4..94418476 100644
--- a/src/qtmsbuild/repc/qtrepc.targets
+++ b/src/qtmsbuild/repc/qtrepc.targets
@@ -267,7 +267,8 @@
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtRepc)">
<WorkType>repc</WorkType>
- <ToolPath>%(QtRepc.QTDIR)\bin\repc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)\repc.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtRepc.QTDIR)\bin\repc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtRepc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
diff --git a/src/qtmsbuild/uic/qtuic.props b/src/qtmsbuild/uic/qtuic.props
index 3f7ce3b2..eb9ee63a 100644
--- a/src/qtmsbuild/uic/qtuic.props
+++ b/src/qtmsbuild/uic/qtuic.props
@@ -49,9 +49,22 @@
<ItemDefinitionGroup>
<QtUic>
<ExecutionDescription>uic %(Identity)</ExecutionDescription>
- <QTDIR>$(QTDIR)</QTDIR>
+
+ <QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(QTDIR)</QTDIR>
+ <QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(QtInstallDir)</QTDIR>
+
<InputFile>%(FullPath)</InputFile>
- <OutputFile>$(ProjectDir)GeneratedFiles\$(Configuration)\ui_%(Filename).h</OutputFile>
+
+ <OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
+ >$(ProjectDir)GeneratedFiles\$(Configuration)\ui_%(Filename).h</OutputFile>
+
+ <QtUicDir Condition="'$(QtVsProjectSettings)' == 'true'"
+ >$(IntDir)\uic\%(RelativeDir)</QtUicDir>
+ <QtUicFileName Condition="'$(QtVsProjectSettings)' == 'true'"
+ >ui_%(Filename).h</QtUicFileName>
+
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
<Outputs>%(OutputFile)</Outputs>
diff --git a/src/qtmsbuild/uic/qtuic.targets b/src/qtmsbuild/uic/qtuic.targets
index e6a4cdc0..4c117052 100644
--- a/src/qtmsbuild/uic/qtuic.targets
+++ b/src/qtmsbuild/uic/qtuic.targets
@@ -58,6 +58,9 @@
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtuic.xml" />
+ <PropertyPageSchema
+ Condition="'$(QtVsProjectSettings)' == 'true'"
+ Include="$(MSBuildThisFileDirectory)qtuic_settings.xml" />
<AvailableItemName Include="QtUic">
<Targets>Qt</Targets>
</AvailableItemName>
@@ -65,11 +68,29 @@
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
+ /// TARGET QtUicInit
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Initialize default metadata
+ // -->
+ <Target Name="QtUicInit">
+ <!--// Initialize %(OutputFile) -->
+ <ItemGroup Condition="'$(QtVsProjectSettings)' == 'true'">
+ <QtUicAux Include="@(QtUic)">
+ <OutputFile>%(QtUic.QtUicDir)\%(QtUic.QtUicFileName)</OutputFile>
+ </QtUicAux>
+ <QtUic Remove="@(QtUic)"/>
+ <QtUic Include="@(QtUicAux)"/>
+ <QtUicAux Remove="@(QtUicAux)"/>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtUicPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare to process sources
// -->
- <Target Name="QtUicPrepare" DependsOnTargets="_SelectedFiles"
+ <Target Name="QtUicPrepare" DependsOnTargets="_SelectedFiles;QtUicInit"
Inputs="%(QtUic.Identity)" Outputs="@(QtUic->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
@@ -257,7 +278,8 @@
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtUic)">
<WorkType>uic</WorkType>
- <ToolPath>%(QtUic.QTDIR)\bin\uic.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)\uic.exe</ToolPath>
+ <ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtUic.QTDIR)\bin\uic.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtUic.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
@@ -269,6 +291,14 @@
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
+ // Add uic output dir to C++ include path
+ // -->
+ <ItemGroup>
+ <QtIncludePath Include="$([System.IO.Path]::GetDirectoryName('%(QtUic.OutputFile)'))"/>
+ </ItemGroup>
+
+ <!--
+ ///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
diff --git a/src/qtmsbuild/uic/qtuic.xml b/src/qtmsbuild/uic/qtuic.xml
index 7757d3a4..bb95c8f1 100644
--- a/src/qtmsbuild/uic/qtuic.xml
+++ b/src/qtmsbuild/uic/qtuic.xml
@@ -77,6 +77,16 @@
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
+ Name="QtUicDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated uic output directory."
+ Visible="false"/>
+ <StringProperty
+ Name="QtUicFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated uic output file."
+ Visible="false"/>
+ <StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Input File"
diff --git a/src/qtmsbuild/uic/qtuic_settings.xml b/src/qtmsbuild/uic/qtuic_settings.xml
new file mode 100644
index 00000000..57c73aea
--- /dev/null
+++ b/src/qtmsbuild/uic/qtuic_settings.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/****************************************************************************
+**
+** Copyright (C) 2019 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$
+**
+****************************************************************************/
+-->
+<ProjectSchemaDefinitions
+ xmlns="http://schemas.microsoft.com/build/2009/properties"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:sys="clr-namespace:System;assembly=mscorlib">
+ <Rule
+ Name="QtRule50_Uic"
+ OverrideMode="Extend"
+ PageTemplate="tool"
+ DisplayName="Qt User Interface Compiler"
+ Order="9">
+ <Rule.DataSource>
+ <DataSource
+ Persistence="ProjectFile"
+ ItemType="QtUic" />
+ </Rule.DataSource>
+ <StringProperty
+ Name="QTDIR"
+ DisplayName="Qt Directory"
+ Visible="false"/>
+ <StringProperty
+ Name="InputFile"
+ DisplayName="Input File"
+ Visible="false"/>
+ <StringProperty
+ Name="OutputFile"
+ DisplayName="Output File"
+ Visible="false"/>
+ <StringProperty
+ Name="QtUicDir"
+ DisplayName="Output Directory"
+ Description="Specifies the path of the generated uic output directory."/>
+ <StringProperty
+ Name="QtUicFileName"
+ DisplayName="Output File Name"
+ Description="Specifies the name of the generated uic output file."/>
+ </Rule>
+</ProjectSchemaDefinitions>