aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2019-11-15 18:09:33 +0100
committerMiguel Costa <miguel.costa@qt.io>2019-12-19 14:08:24 +0000
commit94881b1e278a8db0de04825d816953f82b629ec1 (patch)
tree14a13c67cd0f109c300ae6dc542b3dcc34b5bb28
parentda239ca90edc6274ca6e914f64919ca1bc64df04 (diff)
Fix problems with outer/inner build
To include Qt properties, extracted from qmake, into a VS/MSBuild project requires that MSBuild be invoked recursively, after the Qt properties file has been generated. This change fixes some inconsistencies between the "outer" build (i.e. the initial call to MSBuild, corresponding to the original build request), and the "inner" build (i.e. the recursive call to MSBuild, after the Qt properties file is generated), as well as build requests related to the update of IntelliSense information (syntax highlighting, code completion, etc.) Task-number: QTVSADDINBUG-708 Change-Id: If5d1fcd4ab2ffd996b1817cc3953cefeba3bfe4a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r--src/qtmsbuild/qt.props2
-rw-r--r--src/qtmsbuild/qt_globals.targets19
-rw-r--r--src/qtmsbuild/qt_vars.targets52
-rw-r--r--src/qtprojectlib/MsBuildProject.cs2
-rw-r--r--src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs4
5 files changed, 30 insertions, 49 deletions
diff --git a/src/qtmsbuild/qt.props b/src/qtmsbuild/qt.props
index 28046430..3f4f7ff9 100644
--- a/src/qtmsbuild/qt.props
+++ b/src/qtmsbuild/qt.props
@@ -117,7 +117,7 @@
<QtVarsFilePath
>$(QtVarsOutputDir)\$(QtVarsFileName)</QtVarsFilePath>
<QtVarsIndexPathDesignTime
- >$(QtVarsOutputDir)\$(QtVarsFileNameWithoutExt).designtime.idx</QtVarsIndexPathDesignTime>
+ >$(TEMP)\$(ProjectGuid.Replace('{','').Replace('}','')).$(ProjectName).designtime.idx</QtVarsIndexPathDesignTime>
<QtVarsDesignTime Condition="Exists('$(QtVarsIndexPathDesignTime)')"
>$([System.String]::Copy($([System.IO.File]::ReadAllText('$(QtVarsIndexPathDesignTime)'))).Replace('&#xD;&#xA;',''))</QtVarsDesignTime>
</PropertyGroup>
diff --git a/src/qtmsbuild/qt_globals.targets b/src/qtmsbuild/qt_globals.targets
index 2822e9ba..2d7524f4 100644
--- a/src/qtmsbuild/qt_globals.targets
+++ b/src/qtmsbuild/qt_globals.targets
@@ -437,4 +437,23 @@
</ItemGroup>
</Target>
+ <!--
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ /// TARGET QtOuterBuild
+ /////////////////////////////////////////////////////////////////////////////////////////////////
+ // Root Qt target
+ // -->
+ <PropertyGroup Condition="'$(QtInnerBuild)' != 'true' AND '$(DesignTimeBuild)' != 'true'">
+ <BuildDependsOn>QtOuterBuild</BuildDependsOn>
+ </PropertyGroup>
+
+ <Target Name="QtOuterBuild" DependsOnTargets="$(QtOuterBuildDependsOn)">
+ <!--// Restart build in second MSBuild instance -->
+ <MSBuild
+ Projects="$(MSBuildProjectFullPath)"
+ Targets="Build"
+ Properties="QtInnerBuild=true;RandomFileName=$([System.IO.Path]::GetRandomFileName())">
+ </MSBuild>
+ </Target>
+
</Project>
diff --git a/src/qtmsbuild/qt_vars.targets b/src/qtmsbuild/qt_vars.targets
index fc6c8e3d..a41b3ba7 100644
--- a/src/qtmsbuild/qt_vars.targets
+++ b/src/qtmsbuild/qt_vars.targets
@@ -34,9 +34,8 @@
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <QtDependsOn>QtVarsPrepare;QtVars;$(QtDependsOn)</QtDependsOn>
- <QtSkipBuildTargets>QtSkipBuild;$(QtSkipBuildTargets)</QtSkipBuildTargets>
+ <PropertyGroup Condition="'$(QtVsProjectSettings)' == 'true'">
+ <QtOuterBuildDependsOn>QtVarsPrepare;QtVars;$(QtDependsOn)</QtOuterBuildDependsOn>
<CleanDependsOn>$(CleanDependsOn);QtVarsClean</CleanDependsOn>
</PropertyGroup>
@@ -338,36 +337,17 @@
<!--// In design-time, copy generated .props to randomly named file -->
<PropertyGroup>
<QtVarsDesignTimeNew
- Condition="'$(ErrorLevel)' == '0'"
- >$([System.IO.Path]::Combine('$(QtVarsOutputDir)',
- 'qtvars_$([System.IO.Path]::GetRandomFileName()).designtime.props'))</QtVarsDesignTimeNew>
+ Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
+ >$([System.IO.Path]::Combine('$(TEMP)','$([System.IO.Path]::GetRandomFileName()).designtime.props'))
+ </QtVarsDesignTimeNew>
</PropertyGroup>
- <Delete
- Condition="'$(ErrorLevel)' == '0'"
- Files="$([System.IO.Directory]::GetFiles('$(QtVarsOutputDir)', '*.designtime.props'))"/>
<Copy
- Condition="'$(ErrorLevel)' == '0'"
+ Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
SourceFiles="$(QtVarsFilePath)" DestinationFiles="$(QtVarsDesignTimeNew)"/>
<WriteLinesToFile
- Condition="'$(ErrorLevel)' == '0'"
+ Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
File="$(QtVarsIndexPathDesignTime)" Overwrite="true" Lines="$(QtVarsDesignTimeNew)"/>
- <!--// Restart build in second MSBuild instance with updated Qt variables -->
- <MSBuild
- Condition="'$(DesignTimeBuild)' != 'true'"
- Projects="$(MSBuildProjectFullPath)"
- Targets="Build"
- Properties="RandomFileName=$([System.IO.Path]::GetRandomFileName())">
- </MSBuild>
-
- <!--// Skip remaining build -->
- <CreateProperty Value="true">
- <Output TaskParameter="ValueSetByTask" PropertyName="QtSkipWork" />
- </CreateProperty>
- <CallTarget
- Condition="'$(QtSkipBuildTargets)' != ''"
- Targets="$(QtSkipBuildTargets)"/>
-
<!--// Clean-up -->
<ItemGroup>
<QtModuleList Remove="@(QtModuleList)"/>
@@ -443,22 +423,4 @@
<CallTarget Targets="QtVars"/>
</Target>
- <!--
- /////////////////////////////////////////////////////////////////////////////////////////////////
- /// TARGET QtSkipBuild
- /////////////////////////////////////////////////////////////////////////////////////////////////
- // Remove source file items in order to skip remaining build process
- // -->
- <Target Name="QtSkipBuild">
- <ItemGroup>
- <QtMoc Remove="@(QtMoc)"/>
- <QtRcc Remove="@(QtRcc)"/>
- <QtRepc Remove="@(QtRepc)"/>
- <QtUic Remove="@(QtUic)"/>
- <ClCompile Remove="@(ClCompile)"/>
- <Link Remove="@(Link)"/>
- <ProjectReference Remove="@(ProjectReference)"/>
- </ItemGroup>
- </Target>
-
</Project>
diff --git a/src/qtprojectlib/MsBuildProject.cs b/src/qtprojectlib/MsBuildProject.cs
index 9155cea3..c2f097fb 100644
--- a/src/qtprojectlib/MsBuildProject.cs
+++ b/src/qtprojectlib/MsBuildProject.cs
@@ -1466,7 +1466,7 @@ namespace QtProjectLib
var projectInstance = new ProjectInstance(this[Files.Project].filePath,
new Dictionary<string, string>(configProps)
- { { "DesignTimeBuild", "true" } },
+ { { "QtVSToolsBuild", "true" } },
null, new ProjectCollection());
var buildRequest = new BuildRequestData(projectInstance,
diff --git a/src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs b/src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs
index 02595baf..f177d410 100644
--- a/src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs
+++ b/src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs
@@ -148,8 +148,8 @@ namespace QtVsTools.QtMsBuild
{
await BuildAsync(
project,
- new[] { KVP("DesignTimeBuild", "true") },
- new[] { "Qt" });
+ new[] { KVP("QtVSToolsBuild", "true") },
+ new[] { "QtVars" });
}
private async Task BuildAsync(