Table of Contents

Setup

This page is intended for developers.

Assumption: You checked out the trunk into holdingnuts/trunk and created a build-directory holdingnuts/build. If not, see page hacking.

Client

data directory

The client needs to find its data-directory. Without it, the client displays an error-message and exits.

On UN*X, create a symbolic link from holdingnuts/trunk/data to holdingnuts/build/data.

On Windows, create a windows-shortcut to holdingnuts/build/src/client/holdingnuts.exe and set holdingnuts/trunk as the working directory.

translations

update translations for editing with linguist

There's a CMake option for updating the translations (rescan the sources).

The following commands update the translation files, e.g. holdingnuts/trunk/src/client/translations/hn_de.ts.

cd build
cmake -DUPDATE_TRANSLATIONS=On ../trunk
make translations
cmake -DUPDATE_TRANSLATIONS=Off ../trunk
linguist ../trunk/src/client/translations/hn_de.ts

Warning: Don't forget to turn the option off again (cmake -DUPDATE_TRANSLATIONS=Off ../trunk). A make clean would delete the translation-source files!

building the translations

There's a special make-target called translations which builds all available translations (*.ts → *.qm).

The following commands build the translation files, e.g. holdingnuts/build/src/client/hn_de.qm.

cd build
make translations

Note:: The CMake option UPDATE_TRANSLATIONS must not be On.

use the translations

After building the translations, copy the files into holdingnuts/trunk/data/i18n.

cd build
mkdir ../trunk/data/i18n
cp -v src/client/hn_*.qm ../trunk/data/i18n/

Important: DO NOT check-in those files into SVN, because these are generated files. In a release package the files will -of course- already be present in data/i18n.

Note: If there's no Qt installation on your system, you'll need to copy the Qt's own translations ($QT_DIR/translations/qt_*.qm) into /trunk/data/i18n/ as well. In a release package these files are present, too.

Builds

Build types (release/debug)

There's an internal CMake variable called CMAKE_BUILD_TYPE which specifies whether to build a release or debug version.

In order to build a release version, run following:

cd build
cmake -DCMAKE_BUILD_TYPE=Release ../trunk
make

Verbose builds

Sometimes it's useful to see which commands are executed and which compiler-/linker-flags are used during a build. Use following to get verbose output of the build process:

cd build
make VERBOSE=1

Partial build

There are some options for including/excluding features:

Example: Configure for not building the client.

cmake -DENABLE_CLIENT=Off ../trunk

Additional compiled-in search-path for data-dir

The definition CMAKE_DATA_PATH (Default: unset) adds an own search-path for the data-dir.

cmake -DCMAKE_DATA_PATH=/usr/local/share ../trunk

In this example the data-dir will be located at /usr/local/share/holdingnuts/data.

Note: There are already several search-paths compiled in. Usually this option isn't needed. If the CMAKE_DATA_PATH is specified then this is the only path the data-dir is searched.

SVN revision included in build

The option USE_SVNREV (Default: Off) activates inclusion of a SVN revision string in the build.

cmake -DUSE_SVNREV=On ../trunk

Note: Each time the revision increases, the whole sources are re-built. This is because the SVN revision-string is provided as a definition (CPP macro; #define). Only enable this option if you plan to give away a specific revision for testing purpose.

Source documentation

Doxygen generated source documentation can be built with:

cd build
cmake -DBUILD_DOCUMENTATION=On ../trunk
make documentation

The doxygen output can be found in build/doxygen/doc.

Installation

cmake -DCMAKE_INSTALL_PREFIX=/usr ../trunk
make install
cmake -DCMAKE_INSTALL_PREFIX=/usr/games -CMAKE_DATA_PATH=/usr/share/games ../trunk
make install

Config- and Log-files

The client as well as the server creates an application-settings directory.

On UN*X it's ~/.holdingnuts/, on Windows it's %APPDATA%\HoldingNuts\.

Pitfalls