Difference between revisions of "Building from source"

From CEGUI Wiki - Crazy Eddie's GUI System (Open Source)
Jump to: navigation, search
(Building)
m (GNU Make: Remove ccache, doesn't belong here)
Line 145: Line 145:
 
* You can speed ''make'' up significantly if you have a multi-core CPU and add the -jN parameter, when N is the number of CPU cores on your machine.
 
* You can speed ''make'' up significantly if you have a multi-core CPU and add the -jN parameter, when N is the number of CPU cores on your machine.
 
  [~/cegui/cegui_mk2/build]$ make -j4
 
  [~/cegui/cegui_mk2/build]$ make -j4
* Another useful tool is [http://ccache.samba.org/ ccache], especially if you plan to rebuild CEGUI multiple times, but you already knew this ;)
 
  
 
===Documentation===
 
===Documentation===

Revision as of 03:36, 17 December 2011

Written for CEGUI 0.8


Works with versions 0.8.x (stable)

Works with latest CEGUI stable!

This article is a work in progress and thus incomplete


Obtaining the source

Note: If you'd rather use precompiled SDKs, please follow Downloads.

Stable Releases

Source code from the stable mercurial branches is released at various points in time and made available as source code packages. These packages can be found on the Downloads page.

Mercurial

The source code is kept in mercurial repositories at sourceforge.net. There are code repositories for the main CEGUI libraries as well as for other related items.

A mercurial client (GUI or CLI) is required to access the mercurial repositories and download code. The command necessary to obtain a copy of the code is 'clone':

hg clone SOURCE DESTINATION

where source is the URL of the repository to clone and destination is the local directory. To download a copy of CEGUI and place it in the cegui-source directory, you might use the following command:

hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui-source

Once you have this, the cloned repository is updated to the default (latest, unstable) code, so you most likely will want to switch to a stable branch instead, like this:

hg update -C v0-8
Warning: Be aware that the -C option here will discard any local file changes without additional warning

Repositories

The available repositories can be found here where you can also browse their code from your web browser. A couple of examples:

hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui-source
  • CEED unified editor - CEED
hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED
Note: The difference between the hg clone URLs and the web-interface URLs is hgroot vs hgweb

Building

CEGUI uses CMake as a build system. CMake is cross-platform and open source so it's available on many platforms. There are binaries available for Windows, Mac and Linux, although on Linux your distribution will most probably have a CMake package ready. Make sure you install it before continuing.

Note: CMake does not build the code directly, it generates native makefiles and workspaces that can be used in the compiler environment of your choice.

Thanks to CMake and CEGUI's modular design, configuring and building CEGUI is a breeze.

The following instructions assume you have a cegui directory somewhere on your system so that all CEGUI related projects reside in it.

cegui              (root working directory)
cegui/cegui_mk2    (core CEGUI)
cegui/CEED         (editor)
cegui/...          (something else)
Todo: Check directory structure so that CEED (which depends on CEGUI) works

CEGUI

This section will focus on building the core CEGUI libraries, which is all you need to use CEGUI in a project. Most people will also want CEED, the unified editor for CEGUI, but it is not required.

Dependencies

CEGUI can be built without any dependencies to outside libraries. However, typical configurations require FreeType, a rendering module, an XML parser, and an image codec. CEGUI already provides support for several external libraries thanks to its modular design:

Feature Supported Libraries
Bi-Directional Language MiniBIDI, FriBIDI
Font FreeType
Image Codec DevIL, FreeImage, OGRE, SILLY
Memory Management OGRE, nedmalloc
Regular Expression PCRE
Rendering Direct3D, Irrlicht, OGRE, OpenGL
Resource Providers Default (standard cross-platform file-access), minizip, OGRE
Scripting Lua, Python
XML Expat, LibXML2, RapidXml, TinyXML, Xerces-C++

CMake will automatically detect which external libraries exist on your system and will build CEGUI accordingly so make sure you install any external libraries you want to use before proceeding.

Todo: Does the above ^ work on Windows and Mac?
Note: You can turn off individual CEGUI modules from building (even if you have the required libraries installed) by changing the default Build Options.

Directories

If you're following the directory structure outlined above, you should have something like:

cegui                          (root working directory)
cegui/cegui_mk2                (core CEGUI)

Create the directory cegui/cegui_mk2/build and clone the cegui_mk2 repository inside cegui/cegui_mk2 with the name source. Example:

[~/cegui]$ mkdir cegui_mk2/build
[~/cegui]$ hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/source

The result should be:

cegui/cegui_mk2                (core CEGUI)
cegui/cegui_mk2/build          (will build here)
cegui/cegui_mk2/source         (the mercurial repository copy)

Build Options

There are several build options (or variables) supported by the CEGUI build system. To view them, you can use the command like or CMake GUI.

Using the command line

Enter the build directory and issue the following cmake command:

[~/cegui/cegui_mk2]$ cd build
[~/cegui/cegui_mk2/build]$ cmake -LH ../source
Note: On systems that default to python3 (like Arch Linux) you have to tell it to use python2 like this:
[~/cegui/cegui_mk2/build]$ cmake -LH -DPYTHON_EXECUTABLE=/usr/bin/python2 ../source

CMake will run, it will look for the build systems available on your platform, will look for dependencies and then will print a list of variables, along with their description. For example:

// Select whether bi-directional text is enabled and which library should be used:
    0: Disabled.
    1: Use integrated minibidi library.
    2: Use external fribidi library.
CEGUI_BIDI_SUPPORT:STRING=0
// Specifies whether to use embedded GLEW when external library was found
CEGUI_BUILD_EMBEDDED_GLEW:BOOL=OFF

Using CMake GUI

Start cmake-gui, select our source and build directories and click the Configure button. The available options will be listed in the main window. You can hover the mouse over an option and CMake will show a tooltip with a more detailed description.


Note: Changing the options and building is explained below, in Building.

Building

Configuring and Generating makefiles

The first step is to use CMake to configure the build and generate native makefiles. Without making any configuration changes, the command would be:

[~/cegui/cegui_mk2/build]$ cmake ../source

The same can be done using the CMake GUI. Select the source and build directories, click configure and finally click generate.

The build options can be changed via the GUI or via the CLI. If, for example, we want to turn off the slotted installation option and the python bindings we would run cmake like this:

[~/cegui/cegui_mk2/build]$ cmake ../source -DCEGUI_SLOTTED_INSTALLATION:BOOL=OFF -DCEGUI_BUILD_PYTHON_MODULES:BOOL=OFF
Note: The python bindings are required by CEED so don't disable them if you plan to use it.

Another noteworthy option is the installation path, which is where CEGUI will be installed if you plan to install it via make install. Change the value of the CMAKE_INSTALL_PREFIX configuration variable to set it. Example:

[~/cegui/cegui_mk2/build]$ cmake ../source <other options here> -DCMAKE_INSTALL_PREFIX:PATH=/opt

so it will be installed in /opt/CEGUI (or /opt/CEGUI-0.8 if you use slotted installation).

Make

The second (and last required) step is using the generated native makefiles to build it. This is specific to your build environment; you may need to open the generated solution with MSVC or Xcode, or simply issue the make command.

Windows / MSVC
Todo: MSVC notes
Mac / Xcode
Todo: Xcode notes
GNU Make
  • You can speed make up significantly if you have a multi-core CPU and add the -jN parameter, when N is the number of CPU cores on your machine.
[~/cegui/cegui_mk2/build]$ make -j4

Documentation

Note: The documentation for stable releases can be found online here
Todo: Doxygen howto

CEED

Todo: Short description
Todo: Note and link to prebuilt binary downloads

Dependencies

Todo: Dependencies general

Windows

Todo: Windows deps & notes

Mac

Todo: Mac deps & notes

Linux

Todo: Linux deps & notes
Distro1
Todo: Distro specific deps & notes

Running

Todo: Running

Troubleshooting

Todo: Problems? -> Forum!

Related Articles