Hello,
I tried to use BuildGraph to compile and cook our game.
I created that very simple XML file, based on what’s in the shooter game:
<?xml version='1.0' ?>
<BuildGraph xmlns="http://www.epicgames.com/BuildGraph" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.epicgames.com/BuildGraph ../../../../Engine/Build/Graph/Schema.xsd" >
<Option Name="OutputDir" DefaultValue="$(RootDir)/LocalBuilds" Description="Output directory for packaged builds"/>
<Option Name="WithClientForWin64" Restrict="true|false" DefaultValue="true" Description="Include client for the Win64 target platform"/>
<ForEach Name="AgentPlatform" Values="Win64">
<Agent Name="OurGame Editor $(AgentPlatform)" Type="Compile$(AgentPlatform);$(AgentPlatform)">
<Node Name="Compile OurGameEditor $(AgentPlatform)">
<Compile Target="OurGameEditor" Platform="$(AgentPlatform)" Configuration="Development" Arguments="-Project="F:/Projects/OurGame/OurGame.uproject""/>
</Node>
</Agent>
<Property Name="ClientPlatforms" Value=""/>
<Switch>
<Case If="$(AgentPlatform) == 'Win64'">
<Property Name="ClientPlatforms" Value="$(ClientPlatforms)Win64;" If="$(WithClientForWin64)"/>
</Case>
</Switch>
<Agent Name="Compile OurGame Clients ($(AgentPlatform))" Type="Compile$(AgentPlatform);$(AgentPlatform)">
<ForEach Name="ClientPlatform" Values="$(ClientPlatforms)">
<Node Name="Compile OurGame $(ClientPlatform)">
<Compile Target="OurGame" Platform="$(ClientPlatform)" Configuration="Development" Arguments="-Project="F:/Projects/OurGame/OurGame.uproject"" />
</Node>
</ForEach>
</Agent>
<Agent Name="Package OurGame Clients ($(AgentPlatform))" Type="$(AgentPlatform)">
<ForEach Name="ClientPlatform" Values="$(ClientPlatforms)">
<Property Name="CookFlavor" Value=""/>
<Property Name="CookFlavor" Value="ETC2" If="$(ClientPlatform) == 'Android'"/>
<Node Name="Package OurGame $(ClientPlatform)" Requires="Compile OurGameEditor $(AgentPlatform);Compile OurGame $(ClientPlatform)">
<Command Name="BuildCookRun" Arguments="-Project="F:/Projects/OurGame/OurGame.uproject" -SkipBuild -Cook -Stage -Pak -Package -Platform=$(ClientPlatform) -CookFlavor=$(CookFlavor) -Client -ClientConfig=Development -Archive -ArchiveDirectory="$(OutputDir)""/>
</Node>
</ForEach>
</Agent>
</ForEach>
<Aggregate Name="Package OurGame" Requires="Package OurGame Clients (Win64);"/>
</BuildGraph>
Then I run that graph using that command line:
F:/UE4Installed/Engine/Build/BatchFiles/RunUAT.bat BuildGraph -target="Package OurGame" -script="F:/Projects/OurGame/Build/OurGameBuild.xml"
I have the following output and error:
Running AutomationTool...
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1611,5): warning : The referenced project '..\IOS\MobileDeviceInterface\MobileDeviceInterface.csproj' does not exist. [F:\Projects\ConsoleDev\UE4Inst
alled2\Engine\Source\Programs\AutomationTool\AutomationTool.csproj]
Parsing command line: BuildGraph -target="Package OurGame" -script=F:/Projects/OurGame/Build/OurGameBuild.xml -compile
Compiling scripts.
DotNETUtilities -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\DotNETUtilities.dll
UnrealBuildTool -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\UnrealBuildTool.exe
AutomationUtils.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationUtils.Automation.dll
AllDesktop.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\AllDesktop\AllDesktop.Automation.dll
Localization.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Localization.Automation.dll
OneSkyLocalization.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\OneSkyLocalization.Automation.dll
AutomationScripts.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\AutomationScripts.Automation.dll
Android.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Android\Android.Automation.dll
BuildGraph.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\BuildGraph.Automation.dll
HTML5.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\HTML5\HTML5.Automation.dll
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1611,5): warning : The referenced project '..\..\IOS\MobileDeviceInterface\MobileDeviceInterface.csproj' does not exist. [F:\Projects\ConsoleDev\UE4Installed2\Engine\Source\Programs\AutomationTool\IOS\IOS.Automation.csproj]
IOS.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\IOS\IOS.Automation.dll
Linux.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Linux\Linux.Automation.dll
Mac.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Mac\Mac.Automation.dll
PS4.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\PS4\PS4.Automation.dll
Switch.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Switch\Switch.Automation.dll
TVOS.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\TVOS\TVOS.Automation.dll
Win.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\Win.Automation.dll
XBoxOne.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\XboxOne\XBoxOne.Automation.dll
XLocLocalization.Automation -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\AutomationScripts\XLocLocalization.Automation.dll
Took 0.884348s to run MSBuild.exe, ExitCode=0
****** [1/3] Compile OurGameEditor Win64
Running: C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe F:/Projects/ConsoleDev/UE4Installed2/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj /verbosity:minimal /nologo /target:Rebuild /property:Configuration=Development /property:Platform=AnyCPU
DotNETUtilities -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\DotNETUtilities.dll
UnrealBuildTool -> F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\UnrealBuildTool.exe
Took 0.8858603s to run MSBuild.exe, ExitCode=0
Running: F:\Projects\ConsoleDev\UE4Installed2\Engine\Binaries\DotNET\UnrealBuildTool.exe OurGameEditor Win64 Development -generatemanifest -nobuilduht -xgeexport -NoUBTMakefiles -nobuilduht -Project="F:/Projects/OurGame/OurGame.uproject" -NoHotReload
Using 'git status' to determine working set for adaptive non-unity build.
XGEEXPORT: Exported 'F:\Projects\ConsoleDev\UE4Installed2\Engine\Intermediate\Build\UBTExport.000.xge.xml'
Took 7.1617232s to run UnrealBuildTool.exe, ExitCode=0
ERROR: BUILD FAILED UBT Manifest F:\Projects\ConsoleDev\UE4Installed2\Engine\Intermediate\Build\Manifest.xml does not exist.
while executing <Compile Target="OurGameEditor" Configuration="Development" Platform="Win64" Arguments="-Project="F:/Projects/OurGame/OurGame.uproject"" AllowParallelExecutor="True" />
at F:\Projects\OurGame\Build\OurGameBuild.xml(13)
(see F:\Projects\ConsoleDev\UE4Installed2\Engine\Programs\AutomationTool\Saved\Logs\UAT_Log.txt for full exception trace)
AutomationTool exiting with ExitCode=1 (Error_Unknown)
BUILD FAILED
As you can see the unreal build tool fails to find a Manifest.xml file.
I tried to add AllowXGE=“false” to the compile tasks but with no success.
I also ran the same command but against a compiled engine (from the sources) and it works well.
Is there a limitation in BuildGraph to make it useable only from the sources of the engine?