Compiling Minetest

''This page is about compiling Minetest for desktop platforms. For compiling Minetest for Android, see Android.''

Compiling on GNU/Linux
Install the dependencies using the commands provided in the README.md file.

System-wide binary using default configuration

Build the game (the  command is set to automatically detect the number of CPU threads to use): cd /path/to/minetest_code/ cmake. make -j$(grep -c processor /proc/cpuinfo) minetest
 * 1) Run in

Run-in-place binary using default configuration

This option will place user data in the same directory as the Minetest build (suitable for removable media). cd /path/to/minetest_code/ cmake. -DRUN_IN_PLACE=1 cd bin/ ./minetest


 * Use  to see all CMake options and their current state.
 * You can build a bare server or a bare client by specifying  or.
 * You can select between a Release and Debug build by.
 * Debug build is slower, but gives much more useful output in a debugger.

Building without Irrlicht / X dependency
You can build the Minetest server without library dependencies to Irrlicht or any graphical stuff. You still need the Irrlicht headers for this, so first, download the irrlicht source to somewhere.

When invoking CMake, use.

Prerequisites

 * CMake
 * OpenAL or
 * MinGW or Visual Studio
 * Irrlicht SDK 1.8
 * zlib headers (zlib125.zip) and library (.lib & .dll from zlib125dll.zip)
 * or build a more recent version yourself


 * libvorbis
 * library
 * headers


 * libvorbisfile
 * library
 * headers: libvorbis/include


 * libogg
 * library
 * headers


 * I don't want to download these libraries
 * MSVC pre-compiled libraries (32-bit)


 * And, of course, Minetest (Git clone recommended)
 * Optional: gettext library and tools:
 * Library for UI text translations.


 * Optional: LuaJIT
 * For additional execution speed of mods, may have noticeable memory limits.


 * Optional: FreeType
 * Support for TTF fonts (recommended)

Steps
- Select a directory called DIR hereafter in which you will operate. - Make sure you have CMake and a compiler (MinGW or MSVC) installed. - Download all other libraries and extract them into your DIR. ("extract here", not "extract to packagename/") - All those packages contain a nice base directory in them, which should end up being the direct subdirectories of DIR. - You will end up with a directory structure like this (+ dir, - file): -   + DIR - oalinst.exe - zlib-1.2.5.tar.gz       - zlib125dll.zip ...       - 110214175330.zip (or whatever, this is the minetest source) + gettext (optional, for multi language) + bin + include + lib + irrlicht-1.8.1 + lib + include ...       + libogg-1.3.1.zip + lib + include ...       + libvorbis-1.3.3.zip + lib + include ...       + minetest + src + doc - CMakeLists.txt ...       + minetest-build + zlib-1.2.5 - zlib.h           + win32 ...       + zlib125dll - readme.txt + dll32 ...   -    - Start up the CMake GUI - Select "Browse Source..." and select DIR/minetest - Now, if using MSVC: - Select "Browse Build..." and select DIR/minetest-build - Else if using MinGW: - Select "Browse Build..." and select DIR/minetest - Select "Configure" - Select your compiler - It will warn about missing stuff, ignore that at this point. (later don't)   - Make sure the configuration is as follows (note that the versions may differ for you):

BUILD_CLIENT              [X] BUILD_SERVER              [ ] CMAKE_BUILD_TYPE          Release CMAKE_INSTALL_PREFIX      DIR/minetest-install RUN_IN_PLACE              [X] WARN_ALL                  [ ] GETTEXT_BIN_DIR           DIR/gettext/bin GETTEXT_INCLUDE_DIR       DIR/gettext/include GETTEXT_LIBRARIES         DIR/gettext/lib/libintl.lib IRRLICHT_SOURCE_DIR       DIR/irrlicht-1.8.1 IRRLICHT_LIBRARY          DIR/irrlicht-1.8.1/lib/?/Irrlicht.lib OGG_INCLUDE_DIR           DIR/libogg-1.3.1/include OGG_LIBRARIES             DIR/libogg-1.3.1/?/libogg.lib VORBIS_INCLUDE_DIR        DIR/libvorbis-1.3.3/include VORBIS_LIBRARY            DIR/libvorbis-1.3.3/?/libvorbis.lib VORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include VORBISFILE_LIBRARY        DIR/libvorbis-1.3.3/?/libvorbisfile.lib OPENAL_INCLUDE_DIR        %programfiles%\OpenAL\include OPENAL_LIBRARY            %programfiles%\OpenAL\lib\OpenAL32.lib ZLIB_DLL                  DIR/zlib125dll/dll32/zlibwapi.dll ZLIB_INCLUDE_DIR          DIR/zlib-1.2.5 ZLIB_LIBRARIES            DIR/zlib125dll/dll32/zlibwapi.lib

- See also: Differently explained CMake setup - Hit "Configure", two times 8)   - If something is still coloured red, you have a problem.    - Hit "Generate"    If using MSVC:        - Open the generated minetest.sln        - Switch the configuration from "Debug" to "Release", unless you want to         debug some stuff (it's slower and might not even work at all)        - Build the ALL_BUILD project        - Build the INSTALL project        You may want to use console commands to compile Minetest:            - Find MSBuild.exe in %windir%\Microsoft.NET\Framework\v?.?.?\MSBuild.exe            - Add the path to your system PATH variable            - Compile Minetest by switching to your DIR\minetest-build                MSBuild.exe ALL_BUILD.vcxproj /p:Configuration=Release        - You should now have a working game with the executable in            DIR/minetest-install/bin/minetest.exe        - Additionally you may create a zip package by building the PACKAGE project. If using MinGW: - Using the command line, browse to the build directory and run 'make' (or mingw32-make or whatever it happens to be) - You may need to copy some of the downloaded DLLs into bin/, see what running the produced executable tells you it doesn't have. - You should now have a working game with the executable in           DIR/minetest/bin/minetest.exe

Cross-compilation
To compile a win32 version of Minetest in Linux with MinGW you can use the build script in.

To compile a win64 version of Minetest in Linux with MinGW you can use the build script in.

If you have errors during cross compilation related to std::thread and std::mutex, this is due to mingw-w64 being incorrectly configured for cross compilation.

To fix the errors, use the command:

For 64-bit builds:

For 32-bit Ubuntu Builds:

For 32-bit Debian Builds:

When provided with a prompt for which version to select, please choose "posix". Then retry the buildwin32.sh or buildwin64.sh

Full Windows build
Build Win32 Minetest including all required libraries