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=<dir>)
- Boost library 1.40 or newer with program_options and threads (--with-boost=<dir>)
- CPPUnit framework (--with-cppunit-prefix=<dir>)
- CodePatterns (--with-codepatterns=<dir>)
--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