aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2019-09-24 15:10:38 +0200
committerMiguel Costa <miguel.costa@qt.io>2019-09-30 10:29:38 +0000
commitaace5b9acbb4798f91019a2c0738f8099ed3de30 (patch)
tree78d739dede5f90f37cd623cb7a13a75f729681d2
parent5749a91c6fcfc7279512832fa18069808442f9a6 (diff)
Run QtVars/qmake on project change
The QtVars target, which invokes qmake in order to load project properties needed for the build, is now invoked after changes to any project property. Previously, qmake was only invoked if the Qt install or module selection changed. Change-Id: Ie8004902dbf7124d6a9ca0e01ebc1e7da15f6bcd Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
-rw-r--r--src/qtmsbuild/qt_vars.targets35
-rw-r--r--src/qtvstools/QtMsBuild/Components/QtVarsDesignTime.cs4
2 files changed, 23 insertions, 16 deletions
diff --git a/src/qtmsbuild/qt_vars.targets b/src/qtmsbuild/qt_vars.targets
index baad37cc..78f83f25 100644
--- a/src/qtmsbuild/qt_vars.targets
+++ b/src/qtmsbuild/qt_vars.targets
@@ -35,7 +35,7 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <QtDependsOn Condition="'$(DesignTimeBuild)' != 'true'">QtVars;$(QtDependsOn)</QtDependsOn>
+ <QtDependsOn>QtVars;$(QtDependsOn)</QtDependsOn>
</PropertyGroup>
<ItemGroup>
<QtModuleList Include="$(QtModules)"/>
@@ -53,14 +53,13 @@
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVars
- Condition="'$(QtToolsPath)' != ''
- AND '$(QtConfigStamp)' != '$(QtInstall)|$(QtModuleNames)'">
/////////////////////////////////////////////////////////////////////////////////////////////////
// Call qmake with generated .pro file to export Qt variables into MSBuild .props file
// -->
- <Target Name="QtVars"
- Condition="'$(QtVsProjectSettings)' == 'true'
- AND '$(QtConfigStamp)' != '$(QtInstall)|$(QtModuleNames)'">
+ <Target
+ Name="QtVars"
+ Condition="'$(QtVsProjectSettings)' == 'true'"
+ Inputs="$(MSBuildProjectFile)" Outputs="$(QtVarsFilePath);$(QtVarsDesignTime)">
<CreateProperty
Condition="Exists('$(QtInstall)')"
@@ -201,8 +200,7 @@ for (varName, $$list($$sorted(varNames))) {
;$(QtVarsProFileText)"/>
<!--// Write start of Qt vars data file:
- // * Add QtConfigStamp property ::= Qt version + selected modules
- // - used to determine if .props is up-to-date -->
+ // * Open property group tag -->
<PropertyGroup>
<!--
######## BEGIN generated XML (.props) ##############################################################
@@ -211,7 +209,6 @@ for (varName, $$list($$sorted(varNames))) {
<![CDATA[
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <QtConfigStamp>$(QtInstall)|$(QtModuleNames)</QtConfigStamp>
]]>
</QtVarsDataFileText>
<!--
@@ -298,19 +295,18 @@ for (varName, $$list($$sorted(varNames))) {
<!--// In design-time, copy generated .props to randomly named file -->
<PropertyGroup>
<QtVarsDesignTimeNew
- Condition="'$(ErrorLevel)' == '0' AND '$(DesignTimeBuild)' == 'true'"
+ Condition="'$(ErrorLevel)' == '0'"
>$([System.IO.Path]::Combine('$(QtVarsOutputDir)',
'qtvars_$([System.IO.Path]::GetRandomFileName()).designtime.props'))</QtVarsDesignTimeNew>
</PropertyGroup>
<Delete
- Condition="'$(ErrorLevel)' == '0'
- AND '$(DesignTimeBuild)' == 'true'"
+ Condition="'$(ErrorLevel)' == '0'"
Files="$([System.IO.Directory]::GetFiles('$(QtVarsOutputDir)', '*.designtime.props'))"/>
<Copy
- Condition="'$(ErrorLevel)' == '0' AND '$(DesignTimeBuild)' == 'true'"
+ Condition="'$(ErrorLevel)' == '0'"
SourceFiles="$(QtVarsFilePath)" DestinationFiles="$(QtVarsDesignTimeNew)"/>
<WriteLinesToFile
- Condition="'$(ErrorLevel)' == '0' AND '$(DesignTimeBuild)' == 'true'"
+ Condition="'$(ErrorLevel)' == '0'"
File="$(QtVarsIndexPathDesignTime)" Overwrite="true" Lines="$(QtVarsDesignTimeNew)"/>
<!--// Skip remaining build -->
@@ -349,6 +345,17 @@ for (varName, $$list($$sorted(varNames))) {
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
+ /// TARGET QtVarsDesignTime
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Force QtVars target to run (called when project properties change)
+ // -->
+ <Target Name="QtVarsDesignTime">
+ <Delete Files="$(QtVarsFilePath)"/>
+ <CallTarget Targets="QtVars"/>
+ </Target>
+
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtSkipBuild
/////////////////////////////////////////////////////////////////////////////////////////////////
// Remove source file items in order to skip remaining build process
diff --git a/src/qtvstools/QtMsBuild/Components/QtVarsDesignTime.cs b/src/qtvstools/QtMsBuild/Components/QtVarsDesignTime.cs
index 44ab82e3..f146eb5f 100644
--- a/src/qtvstools/QtMsBuild/Components/QtVarsDesignTime.cs
+++ b/src/qtvstools/QtMsBuild/Components/QtVarsDesignTime.cs
@@ -145,7 +145,7 @@ namespace QtVsTools.QtMsBuild
null, new ProjectCollection());
var buildRequest = new BuildRequestData(projectInstance,
- targetsToBuild: new[] { "QtVars" },
+ targetsToBuild: new[] { "QtVarsDesignTime" },
hostServices: null,
flags: BuildRequestDataFlags.ProvideProjectStateAfterBuild);
@@ -158,7 +158,7 @@ namespace QtVsTools.QtMsBuild
str: string.Format("{0}: design-time pre-build FAILED!",
Path.GetFileName(UnconfiguredProject.FullPath)));
} else {
- var resultQtVars = result.ResultsByTarget["QtVars"];
+ var resultQtVars = result.ResultsByTarget["QtVarsDesignTime"];
if (resultQtVars.ResultCode == TargetResultCode.Success) {
msBuildProject.MarkDirty();
}