1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-04 13:33:34 +00:00
lovr/COMPILING.md
2018-01-01 21:28:53 -08:00

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 your PKG_CONFIG_PATH environment variable. Installing openal-soft with brew will print out a message telling you how to do this.