Building Widelands
This page is about building Widelands for various operating systems. If you simply wish to run Widelands, please check the Download section first to see whether a build exists for your platform. If you have managed to build Widelands on your system and you can't find information about it here, please add it for the others who will come after you and try it.
Libraries
Widelands currently depends on the following libraries, make sure they all are installed and in the search path of your compiler. We currently support compilation with GCC >= 5.4 or Clang/LLVM >= 3.4, though it might work with other compilers too.
- libSDL >=2.0
- libSDL_image
- libSDL_net (only for Build 19 and older)
- libSDL_mixer >= 2.0
- libSDL_ttf >= 2.0
- gettext
- libiconv (on same mirrors as gettext)
- zlib
- libpng
- libcurl (only for Widelands release 1.0 – neither older nor newer versions need this)
- Boost >= 1.48 (only for Widelands version 1.0 and older)
- Asio (only for Widelands versions newer than 1.0)
- Python >= 1.5.2
- libglew
- doxygen
Additional Tools
If you are a developer, you might (optionally!) make use of the following software:
- ctags
- optipng Used to make PNG images more compact. You most certainly don’t need this; compactification is a once-a-year, one-person-only job. If you don’t know already that you will be doing it, forget about it.
- Doxygen Used to generate source code documentation.
- gdb GNU debugger for analyzing crashes
Installing dependencies
In order to build successfully, Widelands require the libraries listed above to be installed on your system. How these packages are installed vary from system to system, in addition to some libraries being required only for specific versions of Widelands, so we ship a script that installs all needed dependencies automatically on most common systems. Simply run in the top-level of the downloaded source code directory:
./install-dependencies.sh
Building Widelands with compile script (fastest way)
First of all, make sure that all required packages are installed (see previous step). As soon as you are ready with this step,
- Download the latest build or clone the repository, then switch to the desired branch. Instructions for this are on our Gitprimer page.
- Display compile options
compile.sh -h
- Compile Widelands, for example::
$ ./compile.sh -r
for a release build, or$ ./compile.sh -a
for a debug build without AddressSanitizer
- To run Widelands after compilation or to run it again later on (in last case make sure you are in Widelands directory (
cd widelands
)):$ ./widelands
If you use git versions, you are able to update Widelands via running ./update.sh
(again make sure you are in the Widelands directory)
Rebuilding in case of changes
If you want to rebuild Widelands with different compile options (e.g. change from release build to debug or vice versa), or with updated build environment or dependencies, you are strongly advised to remove the entire build subdirectory first to ensure a clean build.
Building with CMake manually (advanced)
Building with CMake allows you greater control and more options when building. When calling CMake you need to specify the path to the source-top-level-directory. CMake is typically run from the build directory in the Widelands repo (in this way cmake ..
), but you can also create your own build directory somewhere else, e.g. cd ~/some-other-build-directory && cmake ~/widelands
.
CMake options
In addition to the source directory, you can specify other options using the -D prefix. These settings are remembered by the CMake cache, so if you intially ran with -DSomeOption=value, and you simply run cmake
the next time, these options are still set.
The available options are documented in our GitHub Readme.
make
If you configured CMake with Ninja, replace the make
command with ninja
(or ninja-build
).
Make targets are documented in our GitHub repository
Building
Check out the latest version of the source code and switch to the desired branch. See Gitprimer.
Using CMake
- Enter the build directory
- $ cd build
- Run CMake with your choice of options. The example will build a Debug build without AddressSanitizer, portable, with a custom install destination
- $ cmake -DCMAKE_INSTALL_PREFIX=~/widelands-cmake-install -DWL_PORTABLE=true -DOPTION_ASAN=OFF -DCMAKE_BUILD_TYPE=Debug ..
- if you want to have a different install directory for "make install" instead of /usr/local
Using make
Once Cmake has finished, run make to start compiling.
- $ make -j3
- -j3 tells make to run 3 concurrent tasks, which is recommended for Dual-Core CPUs. Basic rule is -j(number of cores + 1) as recommendation, but beware, gcc takes lots of RAM. If you wish to install the newly build version to your system, run:
- $ make install -j3
- this compiles the sources and then installs in either /usr/local (which you need root privileges for), or in the directory specified with -DCMAKE_INSTALL_PREFIX
- make install includes make, so "make install" is basically the same like "make && make install"
Running freshly built Widelands
- if you did just "make"
- From any directory (which is not a different widelands data directory)
- ./build-cmake/src/widelands
- ATTENTION: This is not recommended, since it will be missing some files (locale, consolidated pics...). Use "make install" instead.
- if you did "make install" and were root
- $ /usr/local/bin/widelands
- if you were not root, used "make install" and specified "-DCMAKE_INSTALL_PREFIX" as above
- ~/widelands-cmake-install/widelands
Rebuilding
You may consider using separate build directories if you want to have both a release and a debug build. Otherwise you are strongly advised to remove the entire content of the build directory when you change compile options, as this is the surest and most effective way of ensuring a clean build.
You also need to do this if you update your build environment or some dependencies.
Failing to clean up properly in these cases is known to cause subtle bugs.
Building under Windows
You have the option to use Min-GW, Inno-Setup or Visual Studio for building Widelands on Windows. While the Min-GW setup is used during continuous integration, the Visual Studio environment enables easy access to debug utilities.
Building in Visual Studio
Please visit Building Widelands in Visual Studio
Building under MinGW
Please visit Buildingwidelandsunderwindowsnew
Building under Innosetup
Since Build10 we support an Innosetup file, which can be used for compiling an installer (like the official Widelands installer). Innosetup can be downloaded from http://www.jrsoftware.org
If you’ve installed InnoSetup, you just need to open [Widelands]/build/win32/Widelands.iss. You might change few settings or directly start packing/compiling the setup.
Note
Please check if all needed *.dll-files are in [Widelands]-directory during Setup packing/compile. Else your setup might be useless :-?
Building under macOS
You can find further information under Building Widelands on Macos. We recommend that you use the method explained there, since these build instructions are most current.