In the wake up the 4.5 preview release, I decided to give the HTML5 build a whirl, but I ran into some troubles with getting UBT to detect the active Emscripten version. The active version is not reliably detected because of some breakdowns in the process for setting up the environment.
Currently the documentation states:
Updating Emscripten
Emscripten provides a bootstrap tool titled emsdk located in the root of the installation folder.
With this tool, you can easily update to the latest version of the Emscripten SDK by running the following commands:
emsdk update emsdk
install latest
emsdk activate latest
The problem with this is that it will only update the Emscripten environment for the current command line session as per this issue reported to the emscripten project: vs-tool integration looks for $EMSCRIPTEN which is not set by emsdk activate · Issue #1783 · emscripten-core/emscripten · GitHub
The solution there was to add another command line option to elevate privileges and write to the global environment, though I would recommend against adding to the global path if possible.
emsdk update emsdk
install latest
emsdk activate --global latest
Alas, another solution supplies itself; Emscripten also provides a command that will enable the Emscripten environment temporarily that could be detected and run before executing UBT or any other operation that needs the Emscripten environment.
C:\GitHub\UnrealEngine>emsdk_env
Adding directories to PATH:
PATH += C:\Program Files\Emscripten\clang\e1.22.0_64bit
PATH += C:\Program Files\Emscripten\spidermonkey\30.0.0_64bit
PATH += C:\Program Files\Emscripten\git\1.8.3\bin;C:\Program Files\Emscripten\gi
t\1.8.3\cmd
Setting environment variables:
EMSCRIPTEN = C:\Program Files\Emscripten\emscripten\1.21.0
C:\GitHub\UnrealEngine>GenerateProjectFiles.bat
Setting up Unreal Engine 4 project files...
Binding IntelliSense data... 100%
Writing project files... 100%
C:\GitHub\UnrealEngine>
Making it automatic
GenerateProjectFiles.bat
@echo off
cmd.exe /v /c "%~dp0Engine\Build\BatchFiles\CopyVisualizers.bat"
if not exist "%~dp0Engine\Build\BatchFiles\GenerateProjectFiles.bat" goto Error_BatchFileInWrongLocation
REM Set up the Emscripen Environment
for %%X in (emsdk_env.bat) do (set EMSDKPATH=%%~$PATH:X)
if defined EMSDKPATH call emsdk_env.bat
call "%~dp0Engine\Build\BatchFiles\GenerateProjectFiles.bat" %*
goto Exit
:Error_BatchFileInWrongLocation
echo GenerateProjectFiles ERROR: The batch file does not appear to be located in the root UE4 directory. This script must be run from within that directory.
pause
goto Exit
:Exit
And build.bat
@echo off
REM The %~dp0 specifier resolves to the path to the directory where this .bat is located in.
REM We use this so that regardless of where the .bat file was executed from, we can change to
REM directory relative to where we know the .bat is stored.
pushd "%~dp0\..\..\Source"
REM %1 is the game name
REM %2 is the platform name
REM %3 is the configuration name
REM Set up the Emscripen Environment
for %%X in (emsdk_env.bat) do (set EMSDKPATH=%%~$PATH:X)
if defined EMSDKPATH call emsdk_env.bat
IF EXIST ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe (
..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -DEPLOY
popd
) ELSE (
ECHO UnrealBuildTool.exe not found in ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe
popd
EXIT /B 999
)