/*
* Project: MoleCuilder
* Description: creates and alters molecular systems
* Copyright (C) 2010 University of Bonn. All rights reserved.
* Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
*/
/**
* \file install.dox
*
* Created on: Oct 28, 2011
* Author: heber
*/
/**
* \page install Installation
*
* \section install-compiling Compiling the Code
*
* After you obtained the code, you do the following:
*
* \code
* ./bootstrap
* \endcode
*
* This creates the necessary autoconf and automake files.
*
* After this,
*
* \code
* mkdir build
* cd build
* ../configure --prefix=`pwd`
* \endcode
*
* which will run the configure script that checks whether you have a current
* version of the following required packages
*
* -# GNU Scientific Library (specify via LDFLAGS, ...)
* -# Qt4 framework (--with-Qt=
or --with-Qt-include-dir, --with-Qt-bin-dir,
* --with-Qt-lib-dir and --with-Qt-lib)
* -# Boost library 1.40 or newer with program_options and threads (--with-boost=)
* -# CPPUnit framework (--with-cppunit-prefix=)
* -# CodePatterns (--with-codepatterns=)
*
* \a --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
*
* \code
* ../configure --help
* \endcode
*
* and some enable/disable switches you should check out:
*
* - \a --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 --enable-debug - activates many internal asserts, memory debugger and more
* (makes code a lot slower but gives information in case something fails)
*
* \note 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
* \code
* ../configure --prefix=`pwd` --enable-hydrogen CFLAGS="-Wall -g3" CXXFLAGS="-Wall -g3"
* \endcode
* 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, ...
* -# \a -DLOG_OBSERVER, What the Observers do is logged, the log is printed on exit
* -# \a -DNO_MEMDEBUG, MemDebug (memory debugger) is disabled
* -# \a -DNO_CACHING, Cachable are short-wired, i.e. always recalculate, this slows
* down the code a lot
* -# \a -DNDEBUG, include NO_MEMDEBUG, also ASSERTs are not checked, this speeds up
* the code by a factor of 5
*
* \section install-install Installing
*
* Now, we are ready to compile and install.
*
* \code
* make
* make install
* \endcode
*
* \attention If you have a multi-core system, it is highly recommended to use the
* \a -j option of make to allow for multiple threads to work on compiling or
* checking the codfe simultaneously.
*
* And if everything went well, you should launch the unit tests and the testsuite
* by (see section \ref tests on how to launch the tests individually)
*
* \code
* make check
* \endcode
*
* If everything is OK, you have a working version of MoleCuilder in form of the
* executables \b bin/molecuilder and \b bin/molecuildergui.
*
* If you have to delete all compiled stuff, enter
*
* \code
* make clean
* \endcode
*
* or
*
* \code
* make distclean
* \endcode
*
* 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, i.e. especially when paths of modules have
* changed. To recover your configure options, either look at \b config.log in
* the build directory or enter
*
* \code
* ./config.status --version
* \endcode
*
* Further useful commands are
* -# make clean uninstall: deletes .o-files and removes executable from the given
* binary directory
* -# make doc: Creates these html pages out of the documented source
* -# make check: Runs an extensive set of unit tests and a testsuite which also gives
* a good overview on the set of functions.
*
* \date 2011-10-31
*/