diff options
-rw-r--r-- | src/qtmsbuild/qt.props | 2 | ||||
-rw-r--r-- | src/qtmsbuild/qt_globals.targets | 19 | ||||
-rw-r--r-- | src/qtmsbuild/qt_vars.targets | 52 | ||||
-rw-r--r-- | src/qtprojectlib/MsBuildProject.cs | 2 | ||||
-rw-r--r-- | src/qtvstools/QtMsBuild/Components/QtProjectTracker.cs | 4 |
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('
',''))</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( |