Skip to content

Instantly share code, notes, and snippets.

@megamorf
Last active October 15, 2019 07:21
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save megamorf/46a36a7be2979d43ee07 to your computer and use it in GitHub Desktop.
Save megamorf/46a36a7be2979d43ee07 to your computer and use it in GitHub Desktop.
Powershell function to help setting up the Linux toolchain for UE4
function Install-LinuxToolChain {
<#
.SYNOPSIS
Downloads and installs the UE4 linux toolchain components.
.DESCRIPTION
Downloads the clang compiler to $ToolChainDestination and creates a
system-wide environment variable pointing to it.
Afterwards you have to regenerate the UE4 engine project files and
rebuild the engine.
.NOTES
https://wiki.unrealengine.com/Compiling_For_Linux
https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)
#>
[CmdletBinding()]
param(
[string]$ToolChainDestination = "C:\UE-Toolchain\",
[string]$ToolChainURL = "http://cdn.unrealengine.com/qfe/v4_clang-3.5.0_ld-2.24_glibc-2.12.2.zip"
)
if(!(Test-Path $ToolChainDestination))
{
Write-Verbose "Toolchain destination directory doesn't exist. Creating now..."
try {
[void](mkdir $ToolChainDestination)
}
catch {
Write-Error "Failed to create target folder (Error: " $_.Exception.Message ")"
exit
}
}
$DestinationFilePath = Join-Path $ToolChainDestination $ToolChainURL.Split('/')[-1]
Write-Verbose ("Start download: [{0}]->[{1}]" -f $ToolChainURL,$DestinationFilePath)
Invoke-WebRequest $ToolChainURL -OutFile $DestinationFilePath
Write-Verbose ("Unpacking {0}" -f $DestinationFilePath)
try {
$shell = New-Object -ComObject Shell.Application
$shell.Namespace($ToolChainDestination).copyhere(($shell.NameSpace($DestinationFilePath)).items())
}
catch {
Write-Warning -Message "Unexpected Error. (Error: " $_.Exception.Message ")"
}
$ToolChain = Get-ChildItem -Path $ToolChainDestination -Recurse -Filter 'toolchain'
Write-Verbose ("Create environment variable: [{0}]->[{1}]" -f 'LINUX_ROOT',$ToolChain.FullName)
[Environment]::SetEnvironmentVariable('LINUX_ROOT', $ToolChain.FullName, 'Machine')
Get-Childitem $ToolChainDestination -filter *.zip | Remove-item -force
}
Install-LinuxToolChain -Verbose
@steve7411
Copy link

Hey! I've updated this to work with the new v8 toolchain for 4.14, including the new environment variable and updating the LINUX_ROOT as well. If you're interested, my fork is here: https://gist.github.com/swolter/8fbf71e8919fb588bfa6a8ce180d623a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment