From KlayGE
Jump to: navigation, search


Before compiling KlayGE, Python 2.7+ and CMake 3.4+ must be installed first. Then you can run to build and install third-party libraries and tools. KlayGE has been tested on these compilers.

Since KlayGE 3.12.0, include and lib paths are set up inside the project files. After extraction, just open the corresponding project file under "Build" directory, KlayGE itself can be built directly. Or you can run to do that job.

Since KlayGE 4.1.0, project files are migrated to cmake. Several on-stop compiling scripts written in Python is also included. The is used for compiling glloader; the for kfont; the for KlayGE, Samples, Tools and Tutorials. The can build all of them. Those .py have two optional parameters. The first one is compiler name, the second one is configuration name. For example, " vc10 x64" means uses vc10's x64 configuration for compiling. Currently, compiler names such as vc8, vc9, vc10, vc11, vc12, mingw and gcc are supported. Configuration names such as x86, x64, x86_app, and arm_app are supported. If no parameter in the command line, default parameters inside will be used.

Since KlayGE 4.4.0, 3rd party libraries uses cmake as project files. You only need to run to finish the build, not native project files provided by 3rd party libraries themselves.

Since KlayGE 4.5.0, Android and WinRT version can be build with the same cmake, too. Before that, you need a Windows version of tools. They are used in the process of building Android and WinRT version.

During the compilation, if the vc said couldn't find v110_xp toolset, please install Visual Studio 2012 Update or up.

Notes for MinGW users:

There are some incompatibilities between new versions of the Windows SDK/DirectX SDK and MinGW. When compiling the DirectSound plug-in, and the compiler will report sal.h cannot be found. VC's "sal.h" needs to be copied to "MinGW/include". Then open "MinGW/lib/gcc/mingw32/4.4.1/include/stddef.h", replace "#define NULL __null" by "#define NULL 0". Otherwise, sal.h will define __null to some other token incorrectly.

Linux platform

Take Ubuntu as an example here. You need to install wine and its dependencies.

sudo apt-get install wine wine-dev libc6-dev-i386 g++-4.8-multilib libx11-dev libgl1-mesa-dev libglu1-mesa-dev libopenal-dev build-essential

Once you have wine installed, you also have to make it into 32-bit mode. Because 64-bit wine doesn't work at all.

export WINEARCH=win32

OSX platform

If you don't have installed, run

/usr/bin/ruby -e "$(curl -fsSL"

Wine must be installed on OSX, too.

brew cask install xquartz
brew install wine --without-win64

See Also