| 1 | /*
 | 
|---|
| 2 |  * Project: MoleCuilder
 | 
|---|
| 3 |  * Description: creates and alters molecular systems
 | 
|---|
| 4 |  * Copyright (C)  2010 University of Bonn. All rights reserved.
 | 
|---|
| 5 |  * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
 | 
|---|
| 6 |  */
 | 
|---|
| 7 | 
 | 
|---|
| 8 | /**
 | 
|---|
| 9 |  * \file install.dox
 | 
|---|
| 10 |  *
 | 
|---|
| 11 |  * Created on: Oct 28, 2011
 | 
|---|
| 12 |  *    Author: heber
 | 
|---|
| 13 |  */
 | 
|---|
| 14 | 
 | 
|---|
| 15 | /**
 | 
|---|
| 16 |  *  \page install Installation
 | 
|---|
| 17 |  *
 | 
|---|
| 18 |  * \section install-compiling Compiling the Code
 | 
|---|
| 19 |  *
 | 
|---|
| 20 |  * After you obtained the code, you do the following:
 | 
|---|
| 21 |  *
 | 
|---|
| 22 |  * \code
 | 
|---|
| 23 |  * ./bootstrap
 | 
|---|
| 24 |  * \endcode
 | 
|---|
| 25 |  *
 | 
|---|
| 26 |  * This creates the necessary autoconf and automake files.
 | 
|---|
| 27 |  *
 | 
|---|
| 28 |  * After this,
 | 
|---|
| 29 |  *
 | 
|---|
| 30 |  * \code
 | 
|---|
| 31 |  * mkdir build
 | 
|---|
| 32 |  * cd build
 | 
|---|
| 33 |  * ../configure --prefix=`pwd`
 | 
|---|
| 34 |  * \endcode
 | 
|---|
| 35 |  *
 | 
|---|
| 36 |  * which will run the configure script that checks whether you have a current
 | 
|---|
| 37 |  * version of the following required packages
 | 
|---|
| 38 |  *
 | 
|---|
| 39 |  * -# GNU Scientific Library (specify via LDFLAGS, ...)
 | 
|---|
| 40 |  * -# Qt4 framework (--with-Qt=<dir> or --with-Qt-include-dir, --with-Qt-bin-dir,
 | 
|---|
| 41 |  *  --with-Qt-lib-dir and --with-Qt-lib)
 | 
|---|
| 42 |  * -# Boost library 1.40 or newer with program_options and threads (--with-boost=<dir>)
 | 
|---|
| 43 |  * -# CPPUnit framework (--with-cppunit-prefix=<dir>)
 | 
|---|
| 44 |  * -# CodePatterns (--with-codepatterns=<dir>)
 | 
|---|
| 45 |  *
 | 
|---|
| 46 |  * \a --prefix is the argument to tell configure where all program code should go
 | 
|---|
| 47 |  * to (pwd is the unix command for the current working directory). There are
 | 
|---|
| 48 |  * others, see
 | 
|---|
| 49 |  *
 | 
|---|
| 50 |  * \code
 | 
|---|
| 51 |  * ../configure --help
 | 
|---|
| 52 |  * \endcode
 | 
|---|
| 53 |  *
 | 
|---|
| 54 |  * and some enable/disable switches you should check out:
 | 
|---|
| 55 |  *
 | 
|---|
| 56 |  * - \a --enable-ecut - says that the TestRunner, comprising all unit tests in one
 | 
|---|
| 57 |  *  exectuable, shall make use of the Eclipse CppUnitTest (ECUT). If this is
 | 
|---|
| 58 |  *  started within eclipse with this plugin installed, a shiny interface will tell
 | 
|---|
| 59 |  *  you what failed and what not.
 | 
|---|
| 60 |  * - \a --enable-debug - activates many internal asserts, memory debugger and more
 | 
|---|
| 61 |  *  (makes code a lot slower but gives information in case something fails)
 | 
|---|
| 62 |  *
 | 
|---|
| 63 |  * \note A note about configure: If one library is found only under some specific path, you
 | 
|---|
| 64 |  * can add CFLAGS, CPPFLAGS, LDFLAGS, ... to the configure call, like this
 | 
|---|
| 65 |  * \code
 | 
|---|
| 66 |  * ../configure --prefix=`pwd` --enable-hydrogen CFLAGS="-Wall -g3" CXXFLAGS="-Wall -g3"
 | 
|---|
| 67 |  * \endcode
 | 
|---|
| 68 |  * which enables all compiler warnings and full debugging of the code without any
 | 
|---|
| 69 |  * optimization. configure saves these variables, too, such that when it is called
 | 
|---|
| 70 |  * to re-configure it will still make use of them from its cache file.
 | 
|---|
| 71 |  *
 | 
|---|
| 72 |  * There are several flags that change the way molecuilder is compiled and probably
 | 
|---|
| 73 |  * make it run faster, more unsafe, ...
 | 
|---|
| 74 |  * -# \a -DLOG_OBSERVER,  What the Observers do is logged, the log is printed on exit
 | 
|---|
| 75 |  * -# \a -DNO_MEMDEBUG,   MemDebug (memory debugger) is disabled
 | 
|---|
| 76 |  * -# \a -DNO_CACHING,  Cachable are short-wired, i.e. always recalculate, this slows
 | 
|---|
| 77 |  *  down the code a lot
 | 
|---|
| 78 |  * -# \a -DNDEBUG,  include NO_MEMDEBUG, also ASSERTs are not checked, this speeds up
 | 
|---|
| 79 |  *  the code by a factor of 5
 | 
|---|
| 80 |  *
 | 
|---|
| 81 |  * \section install-install Installing
 | 
|---|
| 82 |  *
 | 
|---|
| 83 |  * Now, we are ready to compile and install.
 | 
|---|
| 84 |  *
 | 
|---|
| 85 |  * \code
 | 
|---|
| 86 |  * make
 | 
|---|
| 87 |  * make install
 | 
|---|
| 88 |  * \endcode
 | 
|---|
| 89 |  *
 | 
|---|
| 90 |  * \attention If you have a multi-core system, it is highly recommended to use the
 | 
|---|
| 91 |  * \a -j option of make to allow for multiple threads to work on compiling or
 | 
|---|
| 92 |  * checking the codfe simultaneously.
 | 
|---|
| 93 |  *
 | 
|---|
| 94 |  * And if everything went well, you should launch the unit tests and the testsuite
 | 
|---|
| 95 |  * by (see section \ref tests on how to launch the tests individually)
 | 
|---|
| 96 |  *
 | 
|---|
| 97 |  * \code
 | 
|---|
| 98 |  * make check
 | 
|---|
| 99 |  * \endcode
 | 
|---|
| 100 |  *
 | 
|---|
| 101 |  * If everything is OK, you have a working version of MoleCuilder in form of the
 | 
|---|
| 102 |  * executables \b bin/molecuilder and \b bin/molecuildergui.
 | 
|---|
| 103 |  *
 | 
|---|
| 104 |  * If you have to delete all compiled stuff, enter
 | 
|---|
| 105 |  *
 | 
|---|
| 106 |  * \code
 | 
|---|
| 107 |  * make clean
 | 
|---|
| 108 |  * \endcode
 | 
|---|
| 109 |  *
 | 
|---|
| 110 |  * or
 | 
|---|
| 111 |  *
 | 
|---|
| 112 |  * \code
 | 
|---|
| 113 |  * make distclean
 | 
|---|
| 114 |  * \endcode
 | 
|---|
| 115 |  *
 | 
|---|
| 116 |  * which will also delete all autoconf stuff for configure.
 | 
|---|
| 117 |  *
 | 
|---|
| 118 |  * distclean is at times necessary when stuff does not compile and there's
 | 
|---|
| 119 |  * seemingly no logic behind it, i.e. especially when paths of modules have
 | 
|---|
| 120 |  * changed. To recover your configure options, either look at \b config.log in
 | 
|---|
| 121 |  * the build directory or enter
 | 
|---|
| 122 |  *
 | 
|---|
| 123 |  * \code
 | 
|---|
| 124 |  * ./config.status --version
 | 
|---|
| 125 |  * \endcode
 | 
|---|
| 126 |  *
 | 
|---|
| 127 |  *  Further useful commands are
 | 
|---|
| 128 |  *  -# make clean uninstall: deletes .o-files and removes executable from the given
 | 
|---|
| 129 |  *    binary directory
 | 
|---|
| 130 |  *  -# make doc: Creates these html pages out of the documented source
 | 
|---|
| 131 |  *  -# make check: Runs an extensive set of unit tests and a testsuite which also gives
 | 
|---|
| 132 |  *    a good overview on the set of functions.
 | 
|---|
| 133 |  *
 | 
|---|
| 134 |  * \date 2011-10-31
 | 
|---|
| 135 |  */
 | 
|---|