Difference between revisions of "Compiling Minetest"

From Minetest Developer Wiki
Jump to navigation Jump to search
m
(Update this outdated part and add some external links)
Line 50: Line 50:
 
=== Prerequisites ===
 
=== Prerequisites ===
  
* [http://www.cmake.org/cmake/resources/software.html CMake]
+
* [http://www.cmake.org/download/ CMake]
* OpenAL [http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx] or [http://web.archive.org/web/20130629072358/http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx] or [http://sfan5.duckdns.org/upload/data/oalinst.exe]
+
* OpenAL [http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx], [http://web.archive.org/web/20130629072358/http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx] or [http://sfan5.duckdns.org/upload/data/oalinst.exe]
 
* [http://www.mingw.org MinGW] or [http://msdn.microsoft.com/en-us/vstudio/default Visual Studio]
 
* [http://www.mingw.org MinGW] or [http://msdn.microsoft.com/en-us/vstudio/default Visual Studio]
 
* [http://irrlicht.sourceforge.net/downloads.html Irrlicht SDK 1.8]
 
* [http://irrlicht.sourceforge.net/downloads.html Irrlicht SDK 1.8]
Line 67: Line 67:
 
:[http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html library]
 
:[http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html library]
 
:[http://xiph.org/downloads/ headers]
 
:[http://xiph.org/downloads/ headers]
* And, of course, [http://minetest.net/download ''Minetest'']
+
* Alternatively download the [https://www.dropbox.com/s/r4u925x60ol6q1q/Minetest_MSVC_Win32_libraries_compiled.7z MSVC pre-compiled libraries]
 +
* And, of course, [https://github.com/minetest/minetest ''Minetest''] (Git clone recommended)
  
 
=== Steps ===
 
=== Steps ===
 
     - Select a directory called DIR hereafter in which you will operate.
 
     - Select a directory called DIR hereafter in which you will operate.
     - Make sure you have CMake and a compiler installed.
+
     - Make sure you have CMake and a compiler (MinGW or MSVC) installed.
     - Download all the other stuff to DIR and extract them into there.
+
     - Download all other libraries and extract them into your DIR.
 
       ("extract here", not "extract to packagename/")
 
       ("extract here", not "extract to packagename/")
 
       {{Template:Note|zlib125dll.zip needs to be extracted into zlib125dll}}
 
       {{Template:Note|zlib125dll.zip needs to be extracted into zlib125dll}}
 
     - All those packages contain a nice base directory in them, which
 
     - All those packages contain a nice base directory in them, which
 
       should end up being the direct subdirectories of DIR.
 
       should end up being the direct subdirectories of DIR.
     - You will end up with a directory structure like this (+=dir, -=file):
+
     - You will end up with a directory structure like this (+ dir, - file):
 
     -----------------
 
     -----------------
 
     + DIR
 
     + DIR
Line 83: Line 84:
 
         - zlib-1.2.5.tar.gz
 
         - zlib-1.2.5.tar.gz
 
         - zlib125dll.zip
 
         - zlib125dll.zip
         - irrlicht-1.7.1.zip
+
         ...
        - libvorbis-1.3.3.zip
 
        - libogg-1.3.0.zip
 
 
         - 110214175330.zip (or whatever, this is the minetest source)
 
         - 110214175330.zip (or whatever, this is the minetest source)
         + zlib-1.2.5
+
         + gettext (optional, for multi language)
             - zlib.h
+
             + bin
             + win32
+
             + include
             ...
+
             + lib
         + zlib125dll
+
         + irrlicht-1.8.1
             - readme.txt
+
             + lib
             + dll32
+
             + include
 
             ...
 
             ...
         + irrlicht-1.7.1
+
         + libogg-1.3.1.zip
 
             + lib
 
             + lib
 
             + include
 
             + include
Line 103: Line 102:
 
             + include
 
             + include
 
             ...
 
             ...
        + libogg-1.3.0.zip
 
            + lib
 
            + include
 
            ...
 
        + gettext (optional)
 
            +bin
 
            +include
 
            +lib
 
 
         + minetest
 
         + minetest
 
             + src
 
             + src
 
             + doc
 
             + doc
 
             - CMakeLists.txt
 
             - CMakeLists.txt
 +
            ...
 +
        + minetest-build
 +
        + zlib-1.2.5
 +
            - zlib.h
 +
            + win32
 +
            ...
 +
        + zlib125dll
 +
            - readme.txt
 +
            + dll32
 
             ...
 
             ...
 
     -----------------
 
     -----------------
Line 128: Line 128:
 
     - Make sure the configuration is as follows
 
     - Make sure the configuration is as follows
 
       (note that the versions may differ for you):
 
       (note that the versions may differ for you):
-------------------------------------------------------------
+
 
        BUILD_CLIENT                         [X]
+
    BUILD_CLIENT               [X]
     BUILD_SERVER                       [ ]
+
     BUILD_SERVER               [ ]
     CMAKE_BUILD_TYPE             Release
+
     CMAKE_BUILD_TYPE           Release
     CMAKE_INSTALL_PREFIX     DIR/minetest-install
+
     CMAKE_INSTALL_PREFIX       DIR/minetest-install
    IRRLICHT_SOURCE_DIR      DIR/irrlicht-1.7.1
+
     RUN_IN_PLACE               [X]
     RUN_IN_PLACE                       [X]
+
     WARN_ALL                   [ ]
     WARN_ALL                                 [ ]
+
     GETTEXT_BIN_DIR            DIR/gettext/bin
     ZLIB_DLL                                    DIR/zlib125dll/dll32/zlibwapi.dll
+
    GETTEXT_INCLUDE_DIR        DIR/gettext/include
     ZLIB_INCLUDE_DIR                DIR/zlib-1.2.5
+
    GETTEXT_LIBRARIES          DIR/gettext/lib/intl.lib
     ZLIB_LIBRARIES                      DIR/zlib125dll/dll32/zlibwapi.lib
+
     IRRLICHT_SOURCE_DIR        DIR/irrlicht-1.8.1
     LIBVORBIS_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
+
     IRRLICHT_LIBRARY          DIR/irrlicht-1.8.1/lib/?/Irrlicht.lib
     LIBVORBIS_LIBRARIES          DIR/libvorbis.dll
+
     OGG_INCLUDE_DIR            DIR/libogg-1.3.1/include
     LIBVORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
+
     OGG_LIBRARIES              DIR/libogg-1.3.1/?/libogg.lib
     LIBVORBISFILE_LIBRARIES          DIR/libvorbisfile.dll
+
     VORBIS_INCLUDE_DIR        DIR/libvorbis-1.3.3/include
     LIBOGG_INCLUDE_DIR          DIR/libogg-1.3.0/include
+
     VORBIS_LIBRARY            DIR/libvorbis-1.3.3/?/libvorbis.lib
     LIBOGG_LIBRARIES                DIR/libogg.dll
+
     VORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
     GETTEXT_BIN_DIR                  DIR/gettext/bin
+
     VORBISFILE_LIBRARIES      DIR/libvorbisfile.dll
     GETTEXT_INCLUDE_DIR      DIR/gettext/include
+
     OPENAL_INCLUDE_DIR        %programfiles%\OpenAL\include
     GETTEXT_LIBRARIES             DIR/gettext/lib/intl.lib
+
    OPENAL_LIBRARY            %programfiles%\OpenAL\lib\OpenAL32.lib
    GETTEXT_MSGFMT                DIR/gettext/bin/msgfmt
+
    ZLIB_DLL                  DIR/zlib125dll/dll32/zlibwapi.dll
     OPENAL_INCLUDE_DIR=C:\Program Files (x86)\OpenAL\include
+
     ZLIB_INCLUDE_DIR          DIR/zlib-1.2.5
    OPENAL_LIBRARIES=C:\Program Files (x86)\OpenAL\lib\OpenAL32.lib
+
     ZLIB_LIBRARIES             DIR/zlib125dll/dll32/zlibwapi.lib
- Hit "Configure"
+
 
     - Hit "Configure" once again 8)
+
     - See also: [http://nimg.pf-control.de/MTstuff/Compile_Minetest_MSVC.txt Differently explained CMake setup]
 +
     - Hit "Configure", two times 8)
 
     - If something is still coloured red, you have a problem.
 
     - If something is still coloured red, you have a problem.
 
     - Hit "Generate"
 
     - Hit "Generate"
 
     If using MSVC:
 
     If using MSVC:
 
         - Open the generated minetest.sln
 
         - Open the generated minetest.sln
         - The project defaults to the "Debug" configuration. Make very sure to
+
         - Switch the configuration from "Debug" to "Release", unless you want to  
          select "Release", unless you want to debug some stuff (it's slower
+
        debug some stuff (it's slower and might not even work at all)
          and might not even work at all)
 
 
         - Build the ALL_BUILD project
 
         - Build the ALL_BUILD project
 
         - Build the INSTALL 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
 
         - You should now have a working game with the executable in
 
             DIR/minetest-install/bin/minetest.exe
 
             DIR/minetest-install/bin/minetest.exe

Revision as of 11:10, 29 July 2015

Compiling on GNU/Linux

Triple-click to select a whole line. Use Ctrl + Shift + V to paste in a terminal.

Install dependencies. Here's an example for Debian-based and Ubuntu-based distributions:

apt-get install build-essential cmake git libirrlicht-dev libbz2-dev libgettextpo-dev libfreetype6-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libhiredis-dev

Download engine:

git clone https://github.com/minetest/minetest.git
cd minetest/

Download minetest_game (otherwise only the "Minimal development test" game is available)

cd games/
git clone https://github.com/minetest/minetest_game.git
cd ../

Build the game (the make command is set to automatically detect the number of CPU threads to use):

cmake . -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1 -DENABLE_LEVELDB=1 -DENABLE_REDIS=1
make -j$(grep -c processor /proc/cpuinfo)

Run it:

cd bin/
./minetest
  • Use cmake . -LH to see all CMake options and their current state.
  • If you want to place user data in the same directory as the Minetest build (good for putting on removable media), you will want to use -DRUN_IN_PLACE=1.
  • You can build a bare server or a bare client by specifying -DBUILD_CLIENT=0 or -DBUILD_SERVER=0.
  • You can select between a Release and Debug build by -DCMAKE_BUILD_TYPE=<Debug or Release>.
  • 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 -DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source.

Compiling on Windows

Prerequisites

zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip) [4]
This is used for other UI languages. Feel free to leave it out.
  • libvorbis 1.3.3:
library
headers
  • libvorbisfile
library
headers: libvorbis/include
  • libogg
library
headers

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/")
note.png
Note: zlib125dll.zip needs to be extracted into zlib125dll


   - 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/intl.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_LIBRARIES       DIR/libvorbisfile.dll
   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 utils/buildbot/buildwin32.sh.

Full Windows build

Build Win32 minetest including all required libraries