4.2 KiB
Compiling LÖVR
You might want to compile LÖVR from source so you can use LÖVR on other operating systems or create a custom build. Below is a guide for setting up all the dependencies and compiling the code on various operating systems.
Dependencies
- Lua or LuaJIT
- GLFW (3.2+)
- OpenGL (3.3, ES3, or WebGL 2)
- assimp
- OpenVR (1.0.9, for
lovr.headset
) - PhysicsFS
- OpenAL (1.17+ recommended for HRTF support)
- FreeType
- msdfgen
- ODE (for
lovr.physics
) - Emscripten (optional, for compiling for web)
These can be found as submodules in the deps
directory of the repository. To initialize the
submodules, clone LÖVR with the --recursive
option or run this command in an existing repo:
git submodule update --init
Windows
From the lovr
folder, run these commands to create a build folder and compile the project using
CMake:
mkdir build
cd build
cmake ..
cmake --build .
The executable will then exist at /path/to/lovr/build/Debug/lovr.exe
. A LÖVR project (a folder
containing a main.lua
script) can then be dropped onto lovr.exe
to run it, or it can be run
via the command line as lovr.exe path/to/project
.
macOS
Install the dependencies using your package manager of choice:
brew install assimp glfw3 luajit physfs freetype openal-soft ode
You may need to set the PKG_CONFIG_PATH
environment variable for OpenAL to be located properly.
If you run into this, see Troubleshooting below for more info.
Next, build using CMake, as above:
mkdir build
cd build
cmake ..
cmake --build .
The lovr
executable should exist in lovr/build
now. It's recommended to set up an alias or
symlink so that this executable exists on your path. Once that's done, you can run a game like this:
lovr /path/to/myGame
Linux
First, install the dependencies using your package manager of choice.
Arch Linux
pacman -S assimp glfw-x11 luajit physfs freetype2 openal ode
Debian/Ubuntu
sudo apt-get install build-essential cmake libassimp-dev libglfw3-dev libluajit-5.1-dev libphysfs-dev libfreetype6-dev libopenal-dev libode-dev
Then, build with CMake:
mkdir build
cd build
cmake ..
cmake --build .
On Linux, LÖVR needs to run within the Steam Runtime. To do this, first install Steam. Next, install the Steam udev rules. Then, run LÖVR within the Steam runtime:
~/.steam/steam/ubuntu12_32/steam-runtime/run.sh lovr
If you receive errors related to libstdc++
, set the LD_PRELOAD
environment variable when running
the command:
LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1' ~/.steam/steam/ubuntu12_32/steam-runtime/run.sh lovr
WebVR
First, install the Emscripten SDK. Make sure you're running this branch of Emscripten.
Unix:
mkdir build
cd build
emcmake cmake ..
emmake make -j2
Windows (from a Visual Studio Command Prompt, make sure the Emscripten SDK is on PATH):
mkdir build
cd build
emcmake cmake -G "NMake Makefiles" ..
emmake nmake
The above commands will output lovr.js
and lovr.wasm
. To package a game, run:
python /path/to/emscripten/tools/file_packager.py game.data --preload /path/to/game@/ --js-output=game.js
Which will output game.js
and game.data
. You can then include lovr.js
and game.js
on an
HTML page with a canvas element. Check out lovr-webvr-server
for an example.
Troubleshooting
- If you get "CMake no CMAKE_CXX_COMPILER found" on Windows, then install Visual Studio and create a blank C++ project, which will prompt you to install the compilers and tools necessary to compile LÖVR.
- On macOS, if you run into an error message about not being able to find OpenAL, make sure you've
added the proper OpenAL directory (usually something like
/usr/local/opt/openal-soft/lib/pkgconfig
) to yourPKG_CONFIG_PATH
environment variable. Installing openal-soft with brew will print out a message telling you how to do this.