aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Costa <miguel.costa@qt.io>2022-07-29 16:17:36 +0200
committerMiguel Costa <miguel.costa@qt.io>2022-08-01 09:49:21 +0000
commit12380e2ef8fc7b3aa9c022718a91b0577a7889be (patch)
treeced1e51283672e2983dd83b9946ea6f195491daf
parentd1dadd168567e2c01fa18ef66903841d5aa4042b (diff)
Call qmake from subdir of %TEMP%
Because qmake does not support paths with spaces, the QtVars target will now use a subdir of %TEMP% as working directory when qmake is called. Change-Id: Idadecdbdfb0350551798347172549cf56da75a16 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
-rw-r--r--QtMSBuild/QtMsBuild/qt_vars.targets40
1 files changed, 40 insertions, 0 deletions
diff --git a/QtMSBuild/QtMsBuild/qt_vars.targets b/QtMSBuild/QtMsBuild/qt_vars.targets
index 73c55fab..7a204759 100644
--- a/QtMSBuild/QtMsBuild/qt_vars.targets
+++ b/QtMSBuild/QtMsBuild/qt_vars.targets
@@ -338,6 +338,7 @@ DummyQmlObject { }
<Cmd><![CDATA["$(QtToolsPath)/qmake" $(QMakeArgs) qtvars.pro]]></Cmd>
</PropertyGroup>
<HostExec
+ Condition="'$(ApplicationType)' == 'Linux'"
Command="$(Cmd)" RedirectStdOut="qtvars.log" RedirectStdErr="STDOUT"
WorkingDirectory="@(WorkDir->'%(HostPath)')"
Inputs="@(QMakeProj)"
@@ -348,6 +349,45 @@ DummyQmlObject { }
<Output TaskParameter="ExitCode" PropertyName="ErrorLevel"/>
</HostExec>
+ <!--// Run qmake in Windows: set %CD% to subfolder of %TEMP% -->
+ <PropertyGroup
+ Condition="'$(ApplicationType)' != 'Linux'">
+ <QMakeTempDir>$(Temp)\$([System.IO.Path]::GetRandomFileName())</QMakeTempDir>
+ </PropertyGroup>
+ <MakeDir
+ Condition="'$(ApplicationType)' != 'Linux'"
+ Directories="$(QMakeTempDir)" />
+ <Copy
+ Condition="'$(ApplicationType)' != 'Linux'"
+ SourceFiles="$(QtVarsWorkDir)\qtvars.pro"
+ DestinationFolder="$(QMakeTempDir)" />
+ <Copy
+ Condition="'$(ApplicationType)' != 'Linux' AND Exists('$(QtVarsWorkDir)\main.qml')"
+ SourceFiles="$(QtVarsWorkDir)\main.qml"
+ DestinationFolder="$(QMakeTempDir)" />
+ <Copy
+ Condition="'$(ApplicationType)' != 'Linux' AND Exists('$(QtVarsWorkDir)\qml.qrc')"
+ SourceFiles="$(QtVarsWorkDir)\qml.qrc"
+ DestinationFolder="$(QMakeTempDir)" />
+ <HostExec
+ Condition="'$(ApplicationType)' != 'Linux'"
+ Command="$(Cmd)" RedirectStdOut="qtvars.log" RedirectStdErr="STDOUT"
+ WorkingDirectory="$(QMakeTempDir)"
+ IgnoreExitCode="true">
+ <Output TaskParameter="ExitCode" PropertyName="ErrorLevel"/>
+ </HostExec>
+ <ItemGroup>
+ <QMakeGeneratedFiles Include="$(QMakeTempDir)\*" />
+ </ItemGroup>
+ <Copy
+ Condition="'$(ApplicationType)' != 'Linux'"
+ SkipUnchangedFiles="true"
+ SourceFiles="@(QMakeGeneratedFiles)"
+ DestinationFolder="$(QtVarsWorkDir)" />
+ <RemoveDir
+ Condition="'$(ApplicationType)' != 'Linux'"
+ Directories="$(QMakeTempDir)" />
+
<!--// Check qmake result -->
<PropertyGroup
Condition="'$(ErrorLevel)' != '0'