= Compiling the Code =
After you obtained the code as lined out in the RepositoryGuidelines, you do the following:
{{{
./bootstrap
}}}
This creates the necessary autoconf and automake files.
After this,
{{{
mkdir build
cd build
../configure --prefix=`pwd`
}}}
which will run the configure script that checks whether you have a current version of the
* GNU Scientific Library (''specify via LDFLAGS, ...'')
* Qt4 framework (''--with-qtdir=
'')
* Boost library 1.40 or newer with program_options and threads (''--with-boost='')
* CPPUnit framework (''--with-cppunit-prefix='')
* [http://trac.ins.uni-bonn.de/projects/CodePatterns CodePatterns] (''--with-codepatterns='')
''--prefix'' is the argument to tell configure where all program code should go to (''`pwd`'' is the unix command for the current working directory). There are others, see
{{{
../configure --help
}}}
and some enable/disable switches you should check out:
* ''--enable-hydrogen'' - says that hydrogen is treated special in the fragmentation parts
* ''--enable-ecut'' - says that the !TestRunner, comprising all unit tests in one exectuable, shall make use of the Eclipse !CppUnitTest (ECUT). If this is started within eclipse with this plugin installed, a shiny interface will tell you what failed and what not.
A note about ''configure'': If one library is found only under some specific path, you can add CFLAGS, CPPFLAGS, LDFLAGS, ... to the configure call, like this
{{{
../configure --prefix=`pwd` --enable-hydrogen CFLAGS="-Wall -g3" CXXFLAGS="-Wall -g3"
}}}
which enables all compiler warnings and full debugging of the code without any optimization. ''configure'' saves these variables, too, such that when it is called to re-configure it will still make use of them from its cache file.
There are several flags that change the way molecuilder is compiled and probably make it run faster, more unsafe, ...
|| FLAG || what it does ||
|| -DLOG_OBSERVER || What the Observers do is logged, the log is printed on exit ||
|| -DNO_MEMDEBUG || !MemDebug (memory debugger) is disabled ||
|| -DNO_CACHING || Cachable are short-wired, i.e. always recalculate, this slows down the code a lot ||
|| -DNDEBUG || include NO_MEMDEBUG, also ASSERTs are not checked, this speeds up the code by a factor of 5 ||
Now, we are ready to compile and install.
{{{
make
make install
}}}
And if everything went well, you should launch the unit tests and the testsuite by
{{{
make check
}}}
If everything is OK, you have a working version of molecuilder in form of the executables '''bin/molecuilder''' and '''bin/molecuildergui'''.
If you have to delete all compiled stuff, enter
{{{
make clean
}}}
or
{{{
make distclean
}}}
which will also delete all autoconf stuff for ''configure''.
''distclean'' is at times necessary when stuff does not compile and there's seemingly no logic behind it. To recover your configure options, either look at config.log in the build directory or enter
{{{
./config.status --version
}}}