Difference between revisions of "MG/Linux Compiling"

From MegaGlest
Jump to navigation Jump to search
(remove reference to no longer existant MegaGlest Configurator)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
This page explains how to compile [[MegaGlest]] on Linux platforms.
 
This page explains how to compile [[MegaGlest]] on Linux platforms.
  
 +
===Linux quick setup===
 +
[[MG/Getting The Code#Linux quick setup|''See here'']]
  
=='''Recommended way:''' Scripted build ==
+
==Requirements==
 +
*[[MG/Getting The Code|''Download the project'']] from the GIT repository using the command line (recommended) or your favorite GIT tool (such as [http://www.rabbitvcs.org/ RabbitVCS] or [https://code.google.com/p/tortoisegit/ TortoiseGIT]).
 +
*Install build dependencies. These are usally packaged by Linux distributions. On '''Debian, Ubuntu, Fedora, Opensuse and even more Linux distributions''' you may use
 +
cd mk/linux
 +
sudo ./setupBuildDeps.sh
 +
to install them. If your distribution is not supported or you prefer to install yourself: This is the current dependency list - where packages are available, the package names may start with ''lib'' and usually have ''-dev(el)'' towards the end:
  
*Change into the top level ''project'' directory. This is wherever you checked the repository out to (<tt>git clone ...</tt>), probably <tt>megaglest-source/</tt>.
+
<tt>gcc gcc-c++ cmake sdl2 alut GL GLU vorbis x11 lua jpeg png curl ircclient glew ftgl fribidi cppunit vlc miniupnpc</tt>
*You should have a <tt>mk/linux/</tt> subdirectory there, change into this: <pre>cd mk/linux</pre>
 
*Install / update the build dependencies: <pre>sudo ./setupBuildDeps.sh</pre>If your Linux distribution is not supported or you prefer to install dependencies manually, check below.
 
*Start the build: <pre>./build-mg.sh</pre>
 
*To start MegaGlest do: <pre>./megaglest</pre>
 
  
==Requirements==
+
Additionally for map editor and model viewer:
*[[MG/Getting The Code|Download the project]] from the [[MG/Project Structure|GIT]] repository using the command line or your favorite GIT tool (such as [http://www.rabbitvcs.org/ RabbitVCS] or [https://code.google.com/p/tortoisegit/ TortoiseGIT]).
 
*Download build dependencies. These are usally packaged by Linux distributions. On '''Debian, Ubuntu, Fedora, Opensuse and even more Linux distributions '''you may use '''<tt>mk/linux/setupBuildDeps.sh</tt>''' to install them. If your distribution is not supported or you prefer to install yourself: This is the current dependency list - where packages are available, the package names may start wih ''lib'' and usually have ''-dev(el)'' towards the end:
 
**jpeg
 
**png
 
**lua5.1
 
**SDL
 
**SDLmain
 
**curl
 
**openal
 
**ogg
 
**vorbis
 
**vorbisfile
 
**vorbisenc
 
**alut
 
**z
 
**GL
 
**GLU
 
**glew-dev
 
**ircclient
 
**ftgl
 
**miniupnpc
 
**fribidi
 
  
*Additionally for map editor and model viewer:
+
<tt>wxgtk xml2</tt>
**wxbase2.8
 
**wxgtk2.8
 
**gtk2.0-dev
 
**xml2-dev
 
  
==Building using CMake by Hand==
+
==Compilation==
*Open a terminal window and navigate to '''trunk (or the specified branch)''' and type the following:
+
*Update the branch you are working in with the [https://docs.megaglest.org/MG/Getting_The_Code#Update_the_source_code latest GIT code]
 +
===Scripted build ===
 +
(''Recommended way'')
 +
*Start the build:
 +
cd mk/linux
 +
./build-mg.sh
 +
*To start MegaGlest:
 +
./megaglest
 +
 
 +
===Building using CMake by Hand===
 +
*Open a terminal window and navigate to '''the specified branch''' and type the following:
 
  cd mk/linux
 
  cd mk/linux
 
  mkdir build
 
  mkdir build
Line 47: Line 34:
 
  cmake ../../..
 
  cmake ../../..
 
  make
 
  make
*If nothing goes wrong you will see <tt>megaglest</tt> (and other binaries) in the same folder (<tt>mk/linux</tt>).
+
*In the line <tt>cmake ../../..</tt> you can put additional parameters <tt>cmake <parameters> ../../..</tt> where every parameter should be preceded by <tt>-D</tt>.
 
*NOTE: most developer that are not planning to run megaglest from the standard linux LHS paths (like usr/local/bin) should run cmake with the following syntax so that the resulting binaries look in the local compiled folders for data files:
 
*NOTE: most developer that are not planning to run megaglest from the standard linux LHS paths (like usr/local/bin) should run cmake with the following syntax so that the resulting binaries look in the local compiled folders for data files:
 
  cd mk/linux
 
  cd mk/linux
 
  mkdir build
 
  mkdir build
 
  cd build
 
  cd build
  cmake -DCMAKE_INSTALL_PREFIX= ../../..
+
  cmake -DCMAKE_INSTALL_PREFIX='' -DWANT_DEV_OUTPATH=ON ../../..
 
  make
 
  make
  
Notice a space between the parameter -DCMAKE_INSTALL_PREFIX and ..
+
As example other special CMake options for customized builds:
 
 
'''Notes:'''
 
The follow are build types supported using cmake:
 
*Release
 
*Debug
 
*RelWithDebInfo
 
*MinSizeRel
 
 
 
To change the build type execute cmake (default is Release) using:
 
cmake -D CMAKE_BUILD_TYPE=<...>
 
 
 
e.g.
 
cmake -D CMAKE_BUILD_TYPE=Debug
 
 
 
Other special CMake options for customized builds:
 
 
 
 
  -DBUILD_MEGAGLEST=On
 
  -DBUILD_MEGAGLEST=On
 
  -DBUILD_MEGAGLEST_MAP_EDITOR=On
 
  -DBUILD_MEGAGLEST_MAP_EDITOR=On
Line 78: Line 49:
 
  -DWANT_STATIC_LIBS=On
 
  -DWANT_STATIC_LIBS=On
 
  -DMINIUPNPC_VERSION_PRE1_6=Off
 
  -DMINIUPNPC_VERSION_PRE1_6=Off
  -DMINIUPNPC_VERSION_PRE1_5=Off
+
  ...
-DWANT_STREFLOP=Off
+
but if you want to see this list ^ up to date (and with useful description) then use <tt>cmake -LH ../../..</tt> on the beginning.
-DUSE_FTGL=On
 
-DWANT_GIT_STAMP=On
 
-DCMAKE_INSTALL_PREFIX=
 
-DMEGAGLEST_BIN_INSTALL_PATH=
 
-DMEGAGLEST_DATA_INSTALL_PATH=
 
-DMEGAGLEST_DESKTOP_INSTALL_PATH=
 
-DMEGAGLEST_ICON_INSTALL_PATH=
 
-DMEGAGLEST_MANPAGE_INSTALL_PATH=
 
-DCUSTOM_DATA_INSTALL_PATH=
 
  
==Cross Compiling Windows binaries on Linux using MingW:==
+
==Cross Compiling Windows binaries on Linux==
 
*This process is still experimental and is not fully supported at the moment but rather for educational purposes.
 
*This process is still experimental and is not fully supported at the moment but rather for educational purposes.
 
*Download and extract the MingW win32 dependency archive from [https://sourceforge.net/projects/megaglest/files/win32_deps_mingw.7z/download Sourceforge] and extract into the <tt>source</tt> folder.
 
*Download and extract the MingW win32 dependency archive from [https://sourceforge.net/projects/megaglest/files/win32_deps_mingw.7z/download Sourceforge] and extract into the <tt>source</tt> folder.
 
*Install the MingW cross compiler for your distro. In Ubuntu run:
 
*Install the MingW cross compiler for your distro. In Ubuntu run:
 
  sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
 
  sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
*Open a terminal and <tt>cd</tt> to the root folder of your Mega-Glest folder (usually trunk).
+
*Open a terminal and <tt>cd</tt> to the root folder of your Mega-Glest folder.
 
*Modify the script. You also need to change <tt>windows_deps/curl-7.20.1</tt> to <tt>windows_deps/curl-7.21.3</tt>
 
*Modify the script. You also need to change <tt>windows_deps/curl-7.20.1</tt> to <tt>windows_deps/curl-7.21.3</tt>
 
*Run the script:
 
*Run the script:
Line 110: Line 72:
 
  ./megaglest --version
 
  ./megaglest --version
 
  ./megaglest --opengl-info
 
  ./megaglest --opengl-info
 +
 +
==Trouble shooting==
 +
If your build fails, and you have not been building for a while, this is usually due to '''outdated build dependencies''' and in this case you should do:
 +
cd mk/linux
 +
sudo ./setupBuildDeps.sh
 +
If MegaGlest crashes you should '''do a full rebuild'''. To trigger a full rebuild you should just remove the <tt>build</tt> directory before the build, e.g. by run:
 +
cd mk/linux && rm -r build && ./build-mg.sh
 +
 +
==Reporting bugs==
 +
If you think you have run into a bug in MegaGlest, and neither reading the [http://readme.megaglest.org/ README] and [http://faq.megaglest.org/ FAQ] nor searching for it at http://bugs.megaglest.org helps, then please report a new bug at http://bugs.megaglest.org/ (one-time registration is necessary to post).
 +
When filing a bug, please provide a log of the build process of a '''full rebuild'''.
  
 
==See Also==
 
==See Also==
Line 119: Line 92:
 
[[Category:MG]]
 
[[Category:MG]]
 
[[Category:Compiling]]
 
[[Category:Compiling]]
 +
[[Category:Development]]

Latest revision as of 01:28, 13 December 2019

This page explains how to compile MegaGlest on Linux platforms.

Linux quick setup[edit]

See here

Requirements[edit]

  • Download the project from the GIT repository using the command line (recommended) or your favorite GIT tool (such as RabbitVCS or TortoiseGIT).
  • Install build dependencies. These are usally packaged by Linux distributions. On Debian, Ubuntu, Fedora, Opensuse and even more Linux distributions you may use
cd mk/linux
sudo ./setupBuildDeps.sh

to install them. If your distribution is not supported or you prefer to install yourself: This is the current dependency list - where packages are available, the package names may start with lib and usually have -dev(el) towards the end:

gcc gcc-c++ cmake sdl2 alut GL GLU vorbis x11 lua jpeg png curl ircclient glew ftgl fribidi cppunit vlc miniupnpc

Additionally for map editor and model viewer:

wxgtk xml2

Compilation[edit]

Scripted build[edit]

(Recommended way)

  • Start the build:
cd mk/linux
./build-mg.sh
  • To start MegaGlest:
./megaglest

Building using CMake by Hand[edit]

  • Open a terminal window and navigate to the specified branch and type the following:
cd mk/linux
mkdir build
cd build
cmake ../../..
make
  • In the line cmake ../../.. you can put additional parameters cmake <parameters> ../../.. where every parameter should be preceded by -D.
  • NOTE: most developer that are not planning to run megaglest from the standard linux LHS paths (like usr/local/bin) should run cmake with the following syntax so that the resulting binaries look in the local compiled folders for data files:
cd mk/linux
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX= -DWANT_DEV_OUTPATH=ON ../../..
make

As example other special CMake options for customized builds:

-DBUILD_MEGAGLEST=On
-DBUILD_MEGAGLEST_MAP_EDITOR=On
-DBUILD_MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS=On
-DBUILD_MEGAGLEST_MODEL_VIEWER=On
-DWANT_STATIC_LIBS=On
-DMINIUPNPC_VERSION_PRE1_6=Off
...

but if you want to see this list ^ up to date (and with useful description) then use cmake -LH ../../.. on the beginning.

Cross Compiling Windows binaries on Linux[edit]

  • This process is still experimental and is not fully supported at the moment but rather for educational purposes.
  • Download and extract the MingW win32 dependency archive from Sourceforge and extract into the source folder.
  • Install the MingW cross compiler for your distro. In Ubuntu run:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
  • Open a terminal and cd to the root folder of your Mega-Glest folder.
  • Modify the script. You also need to change windows_deps/curl-7.20.1 to windows_deps/curl-7.21.3
  • Run the script:
cd mk/linux
./build-mg-win.sh
  • If all goes well you should see the Windows .exe binaries produced in the data/glest_game folder.

Test binaries[edit]

To test running the game, run the binary in mk/linux like this:

./megaglest

These are some commandline options:

./megaglest --help
./megaglest --version
./megaglest --opengl-info

Trouble shooting[edit]

If your build fails, and you have not been building for a while, this is usually due to outdated build dependencies and in this case you should do:

cd mk/linux
sudo ./setupBuildDeps.sh

If MegaGlest crashes you should do a full rebuild. To trigger a full rebuild you should just remove the build directory before the build, e.g. by run:

cd mk/linux && rm -r build && ./build-mg.sh

Reporting bugs[edit]

If you think you have run into a bug in MegaGlest, and neither reading the README and FAQ nor searching for it at http://bugs.megaglest.org helps, then please report a new bug at http://bugs.megaglest.org/ (one-time registration is necessary to post). When filing a bug, please provide a log of the build process of a full rebuild.

See Also[edit]