Skip to content

Instantly share code, notes, and snippets.

@looterz
Forked from megamorf/Install-LinuxToolChain
Last active February 4, 2018 23:55
Show Gist options
  • Save looterz/8f5a4ade2232786d65f8204641d08ce2 to your computer and use it in GitHub Desktop.
Save looterz/8f5a4ade2232786d65f8204641d08ce2 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/CrossToolchain_Linux/v10_clang-5.0.0-centos7.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_MULTIARCH_ROOT',$ToolChain.FullName)
[Environment]::SetEnvironmentVariable('LINUX_MULTIARCH_ROOT', $ToolChain.FullName, 'Machine')
Get-Childitem $ToolChainDestination -filter *.zip | Remove-item -force
}
Install-LinuxToolChain -Verbose
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment