mirror of
https://github.com/stenzek/duckstation.git
synced 2026-10-12 02:23:23 +00:00
MSBuild: Generate Qt UI headers in parallel
Track each UI form through native build tlogs and submit only stale uic commands to ParallelCustomBuild.
This commit is contained in:
@@ -113,22 +113,40 @@
|
||||
</Target>
|
||||
|
||||
<!--Passes all .ui files to uic and puts output in the build directory-->
|
||||
<ItemGroup>
|
||||
<UiFiles Include="$(MSBuildProjectDirectory)\**\*.ui" />
|
||||
</ItemGroup>
|
||||
<Target Name="QtUi"
|
||||
BeforeTargets="ClCompile"
|
||||
Inputs="@(UiFiles)"
|
||||
Condition="'@(QtUi)'!=''"
|
||||
Outputs="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')">
|
||||
<Message Text="uic %(UiFiles.Filename)" Importance="High" />
|
||||
Condition="'@(QtUi)'!=''">
|
||||
<ItemGroup>
|
||||
<QtUi>
|
||||
<AdditionalInputs>%(QtUi.FullPath)</AdditionalInputs>
|
||||
<Command>"$(QtHostBinDir)uic.exe" "%(QtUi.FullPath)" -o "$(QtToolOutDir)ui_%(QtUi.Filename).h"</Command>
|
||||
<Message>uic %(QtUi.Filename)</Message>
|
||||
<Outputs>$(QtToolOutDir)ui_%(QtUi.Filename).h</Outputs>
|
||||
</QtUi>
|
||||
</ItemGroup>
|
||||
<Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" />
|
||||
<MakeDir Directories="$(QtToolOutDir)" />
|
||||
<Exec Command=""$(QtHostBinDir)uic.exe" "%(UiFiles.FullPath)" -o "$(QtToolOutDir)ui_%(UiFiles.Filename).h"" />
|
||||
<!-- Track UI inputs and outputs in native tlogs, then generate only stale forms concurrently. -->
|
||||
<GetOutOfDateItems
|
||||
Sources="@(QtUi)"
|
||||
OutputsMetadataName="Outputs"
|
||||
DependenciesMetadataName="AdditionalInputs"
|
||||
CommandMetadataName="Command"
|
||||
TLogDirectory="$(TLogLocation)"
|
||||
TLogNamePrefix="QtUi"
|
||||
CheckForInterdependencies="false">
|
||||
<Output TaskParameter="OutOfDateSources" ItemName="_QtUiOutOfDate" />
|
||||
</GetOutOfDateItems>
|
||||
<ParallelCustomBuild
|
||||
Condition="'@(_QtUiOutOfDate)'!=''"
|
||||
Sources="@(_QtUiOutOfDate)" />
|
||||
<ItemGroup>
|
||||
<_QtUiOutOfDate Remove="@(_QtUiOutOfDate)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="QtUiClean">
|
||||
<Delete Files="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')" />
|
||||
<Delete Files="@(QtUi->'$(QtToolOutDir)ui_%(Filename).h')" />
|
||||
</Target>
|
||||
|
||||
<!--Compile files needed to MOC and output in the build directory-->
|
||||
|
||||
Reference in New Issue
Block a user