Building¶
RxDock is written in C++ (with a small amount of C code from Numerical Recipes)
and makes heavy use of the C++ Standard Template Library (STL). The majority of
the source code is compiled into a single shared library (libRbt.so
). The
executable programs themselves are relatively light-weight command-line
applications linked with libRbt.so
.
The tmake build systems (from Trolltech) is used to generate makefiles
automatically for a particular build target (i.e. combination of operating
system and compiler). The source distribution comes with tmake templates
defining the compiler options and flags for three Linux build targets
(linux-g++
and linux-g++-64
). The build targets have been tested under
openSUSE 11.3 (2.6.34.10-0.2 kernel) with GNU g++ (versions 3.3.4, 4.5.0,
and 4.7.2).
Target Name |
Architecture |
Compiler |
Compiler flags (release build) |
---|---|---|---|
|
32-bit |
|
|
|
64-bit |
|
|
Customising the tmake template for a build target¶
If none of the tmake templates are suitable for your machine, or if you wish to
customise the compiler options, you should first customise one of the existing
templates. The tmake template files are stored under
[RBT_ROOT]/build/tmakelib/
. Locate and edit the tmake.conf
file for the
build target you wish to customise. For example, to customise the linux-g++
build target, edit [RBT_ROOT]/build/tmakelib/linux-g++/tmake.conf
and
localise the values to suit your compiler.
Build procedure¶
To build RxDock, first go to the [RBT_ROOT]/build/
directory.
$ cd [RBT_ROOT]/build
Compile¶
Make one of the build targets listed below.
$ make linux-g++
$ make linux-g++-64
Test¶
Run the RxDock unit tests to check build integrity. If no failed tests are reported you should be all set.
$ make test
Cleanup (optional)¶
To remove all intermediate build files from [RBT_ROOT]/build/
, leaving just
the final executables (in [RBT_ROOT]/bin/
) and shared libraries (in
[RBT_ROOT]/lib/
):
$ make clean
To remove the final executables and shared libraries as well, returning to a source-only distribution:
$ make distclean