Version 10 (modified by bknecht, 15 years ago) (diff) |
---|
The Orxonox Build System
We use CMake to configure the the compiler. CMake can either generate makefiles or project files (Visual Studio, KDevelop, Code::Blocks, etc.). There is more information on the CMake homepage.
Our CMake version requirement is 2.6.
Prerequisites
Orxonox has of course some library dependencies which you will have to get yourself from the internet. If you are compiling on Windows however we strongly recommend to use precompiled archives, supplied on the download page because that will make your life a lot easier.
This is a list of requirements:
Library name | Minimum Version |
OGRE 3D Graphics Engine | 1.4 |
CEGUI (Crazy Eddie's GUI System) | 0.5 |
Boost libraries | 1.35 |
ENet (Network library) | 1.1 |
Lua (scripting language) | 5.0 or 5.1 |
Tcl (shell script language) | 8.4 or 8.5 |
OpenAL (audio) | (not yet specified) |
ALUT (audio) | (not yet specified) |
LibOgg | (not yet specified) |
LibVorbis | (not yet specified) |
ZLib (compression) | (not yet specified) |
On Windows, you will also have to have DirectX 9.0c installed. OGRE uses a DX SDK of different version, but you will find the DLLs in the precompiled archives (MSVC and MinGW version differ as well).
CMake Basics
Either you get yourself a GUI version (I really recommend it if you haven't used CMake yet) or you use the command line version.
Generally speaking CMake will generate all files in a single directory tree called build (or binary) tree. That means your source tree doesn't get 'polluted' in any way. We recommend to make a directory in the source tree for the output.
In short for the command line version:
(sitting in your checkout directory) mkdir build cd build cmake ..
Why ".." in the subfolder? Because that's how CMake works. It will generate the output files in the current current directory, ".." only specifies our source tree (with a CMakeLists.txt file).
Options
Specifying them can either be done in the GUI very easily (please exclude the advanced entries) or on the command line with: cmake -D MYVALUE=TRUE .. If you wish to have more options than listed here, you will have to consult an Orxonox developer or the CMake online docs.
Variable Name | Default Value | Description |
CEGUILUA_USE_EXTERNAL_LIBRARY | false | Usually we supply the correct version (regarding the CEGUI version) of the CEGUI script libraries with the source repository. This eliminates the essential need to link CEGUILua and Orxonox against the same Lua version (5.0 or 5.1, subversion shouldn't matter). If you want to use your own CEGUILua library, activate this switch. BUT BE SURE TO KNOW WHICH VERSION OF LUA IS WAS LINKED AGAINST. Tests have shown that non concurring versions result in immediate crashes. |
CMAKE_INSTALL_PREFIX | /usr (Unix), %ProgramFiles%\Orxonox (Windows) | Where you would like to install Orxonox. See the install section below for more information. |
DEPENDENCY_PACKAGE_ENABLE | false (Unix), true (Windows) | Use a package of precompiled dependencies. This only works if there is already a PackageConfigX.cmake file in the "cmake" folder. Currently we deploy such packages for MSVC and MinGW on Windows, where this option is on per default. |
DEPENDENCY_PACKAGE_DIR | ../dependencies/ or dependencies/ from the source dir | The directory in which the precompiled dependencies can be found. That path has to contain the "include" folder |
EXTRA_COMPILER_WARNINGS | false | "—Wextra —Wno-unused-parameter" for GCC and "-W4" on MSVC |
INSTALL_COPYABLE | false (Unix), true (Windows) | Use relative paths for the installation version. See below in the Installation section for more information. |
LINK_XYZ_DYNAMIC (Windows) | all true | When importing libraries on Windows, you need to specify preprocessor macros to link dynamically/statically. Without regard to the default (no macro defined), Orxonox always links dynamically. If you have a static library, for instance enet.a (or enet.lib) then you need to set LINK_ENET_DYNAMIC to false. |
EXTERNAL_DATA_DIRECTORY | media/ or ../media/ from the src/ directory | Specifies the location of the media files (textures, scripts, maps, etc.). The search routine looks for "resources.oxr" |
OGRE_PLUGINS | Plugin_ParticleFX (and Plugin_CgProgramManager on Windows) | List of all the required OGRE plugins. Render systems are not included, they get found automatically. Note that all the plugins of the same build type (debug/release) need to be in the same location. |
TOLUA_PARSER_RELEASE | false | Omits compiling debug messages for the Lua/C++ interface. The option (if set to true) is only active in the release configurations. |
USER_SCRIPT_BUILD_CONFIG | empty | Specify a file to a script that contains additional build configuration code (usually for a specific compiler). |
USER_SCRIPT_LIBRARY_CONFIG | empty | Like above, but gets included earlier before finding the libraries. |
VISUAL_LEAK_DETECTOR_ENABLE (MSVC) | false | Enable including the Visual Leak detector in every source file to help tracking memory leaks. This option is only available when using Visual Studio and you need to have the library configured (global included and library folder set |
Installation
We also provide an install target. When using makefiles, type make install and Orxonox will get installed. For project files, there's usually an INSTALL project which you can "build".
There are two modes to install the game:
Non Copyable Installation (Unix default), INSTALL_COPYABLE=false
Use absolute paths when installing and use the user directory for the log and configuration files. For Linux this means installing the binary, library and media files as superuser to the CMAKE_INSTALL_PREFIX (/usr per default) and then creating the configuration and log files in ~/.orxonox.
On Windows the default location is %ProgramFiles%\Orxonox (usually C:\Program Files\Orxonox) and for the config and log files %ProgramData%\.orxonox (usually C:\Documents and Settings\username\Application Data\.orxonox).
You can start the application from any working directory, but you cannot move or rename the installation directory, paths are hard coded.
Copyable Installation (Windows default), INSTALL_COPYABLE=true
With this option, all paths will be stored relatively. That means you can copy and rename the installation directory as you wish. But you may not rename or copy the subdirectories.
On Windows the application can be started from anywhere, on Unix the working directory has to be in the binary directory so that the libraries can be found. Anyway symlink to the executable gets created in the installation directory for convenience.
The config and log files go to the corresponding folders, but relative to the installation directory. For instance MyDirectory/bin, MyDirectory/config, etc.