Compiling Minetest on Windows

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

Compiling Minetest on Windows

by bgsmithjr » Post

EDIT: You will also need OpenAL for sound support:
http://connect.creativelabs.com/openal/ ... Items.aspx

Code: Select all

Compiling on Windows:
---------------------

- You need:
    * CMake:
        [url]http://www.cmake.org/cmake/resources/software.html[/url]
    * MinGW or Visual Studio
        [url]http://www.mingw.org[/url]/
        [url]http://msdn.microsoft.com/en-us/vstudio/default[/url]
    * Irrlicht SDK 1.7:
        [url]http://irrlicht.sourceforge.net/downloads.html[/url]
    * Zlib headers (zlib125.zip)
        [url]http://www.winimage.com/zLibDll/index.html[/url]
    * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
        [url]http://www.winimage.com/zLibDll/index.html[/url]
    * Optional: gettext bibrary and tools:
        [url]http://gnuwin32.sourceforge.net/downlinks/gettext.php[/url]
        - This is used for other UI languages. Feel free to leave it out.
HERE * Libvorbis 1.3.3
                DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbis[/url]
                INCLUDE=[url]http://xiph.org/downloads/[/url]
HERE  *Libvorbisfile
                DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbisfile[/url]
                INCLUDE=libvorbis/include
HERE *Libogg
                INCLUDE=[url]http://xiph.org/downloads/[/url]
                DLL= [url]http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html[/url]
    * And, of course, Minetest-c55:
        [url]http://c55.me/minetest/download[/url]
- Steps:
    - Select a directory called DIR hereafter in which you will operate.
    - Make sure you have CMake and a compiler installed.
    - Download all the other stuff to DIR and extract them into there.
      ("extract here", not "extract to packagename/")
      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
        - irrlicht-1.7.1.zip
                - libvorbis-1.3.3.zip
                - libogg-1.3.0.zip
        - 110214175330.zip (or whatever, this is the minetest source)
        + zlib-1.2.5
            - zlib.h
            + win32
            ...
        + zlib125dll
            - readme.txt
            + dll32
            ...
        + irrlicht-1.7.1
            + lib
            + include
            ...
HERE  + libvorbis-1.3.3.zip
                       + lib
                       + include
                         ...
HERE + libogg-1.3.0.zip
                       + lib
                       + include
                         ...
        + gettext (optional)
            +bin
            +include
            +lib
        + minetest
            + src
            + doc
            - CMakeLists.txt
            ...
    -----------------
    - 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
    IRRLICHT_SOURCE_DIR       DIR/irrlicht-1.7.1
    RUN_IN_PLACE                        [X]
    WARN_ALL                                 [  ]
    ZLIB_DLL                                    DIR/zlib125dll/dll32/zlibwapi.dll
    ZLIB_INCLUDE_DIR                 DIR/zlib-1.2.5
    ZLIB_LIBRARIES                       DIR/zlib125dll/dll32/zlibwapi.lib
HERE  LIBVORBIS_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
HERE LIBVORBIS_LIBRARIES           DIR/libvorbis.dll
HERE  LIBVORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
HERE  LIBVORBISFILE_LIBRARIES           DIR/libvorbisfile.dll
HERE  LIBOGG_INCLUDE_DIR          DIR/libogg-1.3.0/include
HERE  LIBOGG_LIBRARIES                DIR/libogg.dll
    GETTEXT_BIN_DIR                  DIR/gettext/bin
    GETTEXT_INCLUDE_DIR       DIR/gettext/include
    GETTEXT_LIBRARIES             DIR/gettext/lib/intl.lib
    GETTEXT_MSGFMT                 DIR/gettext/bin/msgfmt
OPENAL_INCLUDE_DIR=C:\Program Files (x86)\OpenAL\include
OPENAL_LIBRARIES=C:\Program Files (x86)\OpenAL\lib\OpenAL32.lib
- Hit "Configure"
    - Hit "Configure" once again 8)
    - If something is still coloured red, you have a problem.
    - Hit "Generate"
    If using MSVC:
        - Open the generated minetest.sln
        - The project defaults to the "Debug" configuration. Make very sure to
          select "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 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

Windows releases of minetest are built using a bat script like this:
--------------------------------------------------------------------

set sourcedir=%CD%
set installpath="C:\tmp\minetest_install"
set irrlichtpath="C:\tmp\irrlicht-1.7.2"

set builddir=%sourcedir%\bvc10
mkdir %builddir%
pushd %builddir%
cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=1 -DCMAKE_INSTALL_PREFIX=%installpath%
if %errorlevel% neq 0 goto fail
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release
if %errorlevel% neq 0 goto fail
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release
if %errorlevel% neq 0 goto fail
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release
if %errorlevel% neq 0 goto fail
popd
echo Finished.
exit /b 0

:fail
popd
echo Failed.
exit /b 1
Last edited by bgsmithjr on Sat Apr 07, 2012 01:19, edited 1 time in total.

Jordach
Member
Posts: 4534
Joined: Mon Oct 03, 2011 17:58
GitHub: Jordach
IRC: Jordach
In-game: Jordach
Location: Blender Scene

by Jordach » Post

thanKs dude!

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

no problem

Gilli
Member
Posts: 20
Joined: Sat Mar 17, 2012 21:15

by Gilli » Post

Hello bgsmithjr,

I love you !

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

Added dll downloads

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

Also, if using visual studio you'll want to go to the solution explorer, right click the minetest project, goto properties,on the left treeview, expand Linker, then click input, then on the right side, in the field Ignore Specific Default Libraries add

libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

Also, while using cmake-gui I noticed it is passing /MD, but on visual studio it passes /MT, you can change that by opening the properties of the minetest project expaning C++ on the right, then selecting Code Generation, changing the runtime library field to Multi-Threaded DLL(/MD)

http://msdn.microsoft.com/en-us/library ... S.60).aspx
Last edited by bgsmithjr on Thu Mar 29, 2012 13:55, edited 1 time in total.

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Hi Bgsmithjr,

Can you help me please ?

C:\Users \****\Desktop\Minetest\libvorbisfile.dll : fatal error LNK1107: invalid or corrupt file: can not read 0x2B8

I have just this error.
Last edited by Utilisatrice on Sat Mar 31, 2012 13:06, edited 1 time in total.

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

I don't use the dll, I just the .lib file. You can compile it yourself using cmake gui.
Here is what I use.
http://www.filedropper.com/libvorbisfilestatic

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Thank, but now :

C:\Users\****\Desktop\Minetest\libvorbis.dll : fatal error LNK1107: invalid or corrupt file : can not read 0x240.

:'(.

EDIT : When I Use libvorbis.lib there is :

C:\Users\****\Desktop\Minetest\libogg.dll : fatal error LNK1107: invalid or corrupt file : can not read 0x278
Last edited by Utilisatrice on Sat Mar 31, 2012 15:11, edited 1 time in total.

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

here are replacements for libogg, libvorbis, and libvorbisfile dlls
http://www.filedropper.com/minetest
Last edited by bgsmithjr on Sat Mar 31, 2012 15:22, edited 1 time in total.

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Thank, but I often change and I compile the sources.

You could give me the libs that you use please ?

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

I just did in my last post, those are just the libs, sorry for naming minetest.zip

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Code: Select all

>LINK : warning LNK4075: ' /INCREMENTAL' ignoré à cause de la spécification '/LTCG'
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: __errno déjà défini(e) dans LIBCMT.lib(dosmap.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _malloc déjà défini(e) dans LIBCMT.lib(malloc.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _realloc déjà défini(e) dans LIBCMT.lib(realloc.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _free déjà défini(e) dans LIBCMT.lib(free.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _fseek déjà défini(e) dans LIBCMT.lib(fseek.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _calloc déjà défini(e) dans LIBCMT.lib(calloc.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _ftell déjà défini(e) dans LIBCMT.lib(ftell.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _fclose déjà défini(e) dans LIBCMT.lib(fclose.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _fread déjà défini(e) dans LIBCMT.lib(fread.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _fopen déjà défini(e) dans LIBCMT.lib(fopen.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _toupper déjà défini(e) dans LIBCMT.lib(toupper.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _ceil déjà défini(e) dans LIBCMT.lib(_ceil_pentium4_.obj)
2>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _exit déjà défini(e) dans LIBCMT.lib(crt0dat.obj)
2>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) déjà défini(e) dans LIBCMT.lib(typinfo.obj)
2>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) déjà défini(e) dans LIBCMT.lib(typinfo.obj)
2>     Création de la bibliothèque C:/Users/****/Desktop/Minetest/celeron55-minetest-96ee73f/bin/Release/minetest.lib et de l'objet C:/Users/****/Desktop/Minetest/celeron55-minetest-96ee73f/bin/Release/minetest.exp
2>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
2>C:\Users\****\Desktop\Minetest\celeron55-minetest-96ee73f\bin\Release\minetest.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
:'(, I don't understand.

Jordach
Member
Posts: 4534
Joined: Mon Oct 03, 2011 17:58
GitHub: Jordach
IRC: Jordach
In-game: Jordach
Location: Blender Scene

by Jordach » Post

From what google gives me, it seems to be MSVCRT.dll.

Update by searching "vcredist.exe" on Microsoft's website.

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

Oh sorry, you have to go the solution explorer on the left hand side, select the project 'minetest', then expand Linker, then choose input, then on the right hand side there should be something that says 'Ignore specific default libraries' in that box put.
libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Hi Jordach,

I download "Vcredist.exe" and after installation, it had no effect, still the same error.

Jordach
Member
Posts: 4534
Joined: Mon Oct 03, 2011 17:58
GitHub: Jordach
IRC: Jordach
In-game: Jordach
Location: Blender Scene

by Jordach » Post

Strange, it worked for me without following instructions....

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Thank but now :

Création de la bibliothèque C:/Users/****/Desktop/Minetest/celeron55-minetest-96ee73f/bin/Release/minetest.lib et de l'objet C:/Users/****/Desktop/Minetest/celeron55-minetest-96ee73f/bin/Release/minetest.exp
2>lua.lib(lmathlib.obj) : error LNK2001: unresolved external symbol __HUGE
2>C:\Users\****\Desktop\Minetest\celeron55-minetest-96ee73f\bin\Release\minetest.exe : fatal error LNK1120: 1 unresolved externals

xD.
Last edited by Utilisatrice on Sat Mar 31, 2012 16:38, edited 1 time in total.

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

select the main project select clean, then rebuild and if that doesnt work change solution explorer->c/c++ -->code generation, on the right side runtime library field->value='/MT' multi-threaded, to '/MD Mult-threaded DLL'
Last edited by bgsmithjr on Sat Mar 31, 2012 17:08, edited 1 time in total.

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

Doesn't work :(.

User avatar
bgsmithjr
Member
Posts: 436
Joined: Thu Mar 08, 2012 23:21
Location: USA,Michigan

by bgsmithjr » Post

I will need more information, if you start from the beginning with the unmodified source and tell me what you do in steps, I could help but I have too little of information to help you any more, now.

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

I do like you said but in the end, I still have the same error :

Code: Select all

------ Début de la génération : Projet : ZERO_CHECK, Configuration : Release Win32 ------
2>------ Début de la génération : Projet : minetest, Configuration : Release Win32 ------
2>LINK : warning LNK4075: ' /INCREMENTAL' ignoré à cause de la spécification '/LTCG'
2>     Création de la bibliothèque C:/Users/****/Desktop/Minetest/celeron55-minetest-7bfa2d4/bin/Release/minetest.lib et de l'objet C:/Users/****/Desktop/Minetest/celeron55-minetest-7bfa2d4/bin/Release/minetest.exp
2>lua.lib(lmathlib.obj) : error LNK2001: symbole externe non résolu __HUGE
2>C:\Users\****\Desktop\Minetest\celeron55-minetest-7bfa2d4\bin\Release\minetest.exe : fatal error LNK1120: 1 externes non résolus
3>------ Début de la génération : Projet : ALL_BUILD, Configuration : Release Win32 ------
3>  Build all projects
========== Génération : 2 a réussi, 1 a échoué, 3 mis à jour, 0 a été ignoré ==========

User avatar
Calinou
Moderator
Posts: 3169
Joined: Mon Aug 01, 2011 14:26
GitHub: Calinou
IRC: Calinou
In-game: Calinou
Location: Troyes, France
Contact:

by Calinou » Post

Idea: you should make Windows binairies about the latest git and distribute them (update them daily/weekly).
That'd help a lot of people. Thanks. :)

Utilisatrice
Member
Posts: 103
Joined: Thu Feb 16, 2012 18:04

by Utilisatrice » Post

When I delete:

lua_pushnumber (L, HUGE_VAL);

Line 255.

I can compile the game but when I try to enter the game, minetest crash.

EDIT : Calinou, sa servirait à rien, il y a pas mal de personnes qui modifie les sources de minetest pour pouvoir y inclure du contenu. Donc si on peu pas compiler les sources du jeu nous mêmes, ce serait compliquer on va pas déranger bgsmithjr à chaque fois.
Last edited by Utilisatrice on Sat Mar 31, 2012 18:58, edited 1 time in total.

Jordach
Member
Posts: 4534
Joined: Mon Oct 03, 2011 17:58
GitHub: Jordach
IRC: Jordach
In-game: Jordach
Location: Blender Scene

by Jordach » Post

Calinou wrote:Idea: you should make Windows binairies about the latest git and distribute them (update them daily/weekly).
That'd help a lot of people. Thanks. :)
I agree. I can't use Linux since Acer don't provide me with drivers to run the bloddy damn thing, I am currently stuck with the version provided by bgsmithjr, and the second problem is, I can try to compile, but get lost at the MiniGW (OR MSVS STAGE.) I hope you could become the newest Windows package maker, and you do seem pretty nice I must admit.

Post Reply

Who is online

Users browsing this forum: Baidu [Spider] and 11 guests