====== Compiling and running Doomsday 2.0–2.3 with CMake ====== Doomsday 2 is built with [[https://cmake.org|CMake]] 3.1 (or later). ===== Get the source ===== There are a couple of ways to get the source code: * Download a [[http://dengine.net/source|source package]]. * Check out the [[https://github.com/skyjake/Doomsday-Engine|Doomsday-Engine]] repository from GitHub: git clone --recursive https://github.com/skyjake/Doomsday-Engine You can then switch to any release or a specific build via tags. Stable releases are tagged "release-x.y.z". ===== Install dependencies ===== The following libraries are required for compilation: * Qt 5 (modules: Core, Network, Gui, OpenGLExtensions, Widgets) * Qt 5 X11Extras module (on Unix/X11) * DirectX (on Windows) The following are optional: * SDL 2 (joystick support) * SDL_mixer 2 (audio plugin) * FMOD Studio Low-Level Programmer API for Doomsday 2.1+, or FMOD Ex for Doomsday 2.0 or earlier (audio plugin) * OpenAL (audio plugin) * libXrandr and libXxf86vm (X11 display mode support) ===== Create build directory ===== You must create a separate directory that is used for the build files. In-tree builds are not supported. ===== Build and deploy ===== After the dependencies are available, run CMake and configure the appropriate build variables. The following variables are noteworthy: * Normally you will want to set the ''CMAKE_BUILD_TYPE'' to "Release". Note that with gcc/clang, omitting this variable will result in an unoptimized build. * Set the ''DE_PREFIX'' variable to define the installation root path. * Set the ''QMAKE'' variable to the path of the qmake tool to use (unless autodetected). This determines which version of Qt will be used in the build. * ''DENG_ENABLE_*'' are used for enabling and disabling Doomsday features. * ''*_DIR'' (e.g., ''FMOD_DIR'') are used for configuring locations of third-party libraries. When CMake has configured the build successfully, run your chosen build tool. After building, you must still deploy the binaries (e.g., using ''make install'') because Doomsday expects a particular runtime directory layout.