install.dox
author Alpar Juttner <alpar@cs.elte.hu>
Thu, 30 Oct 2008 17:13:33 +0000
changeset 10 55e2f7712e87
parent 9 a48bf0d3a790
child 12 d64ffbd7d8c6
permissions -rw-r--r--
TOC and section numbering are generated from toc.txt
     1 /* -*- mode: C++; indent-tabs-mode: nil; -*-
     2  *
     3  * This file is a part of LEMON, a generic C++ optimization library.
     4  *
     5  * Copyright (C) 2003-2008
     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     8  *
     9  * Permission to use, modify and distribute this software is granted
    10  * provided that this copyright notice appears in all copies. For
    11  * precise terms see the accompanying LICENSE file.
    12  *
    13  * This software is provided "AS IS" with no warranty of any kind,
    14  * express or implied, and with no claim as to its suitability for any
    15  * purpose.
    16  *
    17  */
    18 
    19 /**
    20 [PAGE]install[PAGE] Installation Guide
    21 
    22 In this section we detail how to start using LEMON, from downloading it
    23 to your computer, through the steps of installation, to showing how to
    24 compile programs that use LEMON. We assume that you
    25 have a basic knowledge of your operating system and C++ programming
    26 language. The procedure is pretty straightforward, but if you have any
    27 difficulties do not hesitate to
    28 <a href="mailto:lemon-user@lemon.cs.elte.hu"><b>ask</b></a>.
    29 
    30 [SEC]requirements_lemon[SEC] Hardware and Software Requirements
    31 
    32 In LEMON we use C++ templates heavily, thus compilation takes a
    33 considerable amount of time and memory. So some decent box would be
    34 advantageousm, but otherwise there are no special hardware requirements.
    35 
    36 You will need a recent C++ compiler. Our primary target is the GNU C++
    37 Compiler (g++), from version 3.3 upwards. We also checked the Intel C++
    38 Compiler (icc) and Microsoft Visual C++ (on Windows).
    39 If you want to develop with LEMON under Windows, you can use a Windows
    40 installer or you can consider using Cygwin.
    41 
    42 In this description we will suppose a Linux environment and GNU C++ Compiler.
    43 If you would like to develop under Windows and use a Windows installer,
    44 you could skip the following sections and continue reading
    45 \ref basic_concepts.
    46 However keep in mind that you have to make appropriate steps instead of
    47 the instructions detailed here to be able to use LEMON with your compiler.
    48 
    49 [SEC]requirements_lp[SEC] LP Solver Requirements
    50 
    51 The LEMON LP solver interface can use the GLPK (GNU Linear Programming
    52 Kit), CPLEX and SoPlex solver. If you want to use it, you will need at
    53 least one of these.
    54 See the <b><tt>INSTALL</tt></b> file how to enable these at compile time.
    55 
    56 [SEC]install_from_source[SEC] Install from Source
    57 
    58 You can download LEMON from the web site:
    59 <a href="http://lemon.cs.elte.hu/">http://lemon.cs.elte.hu/</a>.
    60 There you will find released versions in form of <tt>.tar.gz</tt> files
    61 (and Windows installers).
    62 If you want a developer version (for example you want to contribute in
    63 developing LEMON) then you might want to use our Mercurial repository.
    64 This case is detailed \ref hg_checkout "later", so from now on we
    65 suppose that you downloaded a <tt>.tar.gz</tt> file.
    66 
    67 Thus you have to do the following steps.
    68 
    69 Download the tarball either from the browser or just issuing
    70 
    71 \verbatim
    72 wget http://lemon.cs.elte.hu/pub/sources/lemon-1.0.tar.gz
    73 \endverbatim
    74 
    75 \note The tarball is named <tt>lemon-x.y.z.tar.gz</tt> where \c x, \c
    76 y and \c z (which is missing if it is 0) are numbers indicating the
    77 version of the library, in our example we will have
    78 <tt>lemon-1.0.tar.gz</tt>.
    79 
    80 Then issue the following commands:
    81 
    82 \verbatim
    83 tar xvzf lemon-1.0.tar.gz
    84 cd lemon-1.0
    85 ./configure
    86 make
    87 make check    # This is optional, but recommended. It runs a bunch of tests.
    88 make install
    89 \endverbatim
    90 
    91 These commands install LEMON under \c /usr/local (you will
    92 need root privileges to be able to install to that
    93 directory). If you want to install it to some other place, then
    94 pass the \c --prefix=DIRECTORY flag to <tt>./configure</tt>, for example:
    95 
    96 \verbatim
    97 ./configure --prefix=/home/username/lemon
    98 \endverbatim
    99 
   100 We briefly explain these commands below.
   101 
   102 \verbatim
   103 tar xvzf lemon-1.0.tar.gz
   104 \endverbatim
   105 This command untars the <tt>tar.gz</tt> file into a directory named
   106 <tt>lemon-1.0</tt>.
   107 
   108 \verbatim
   109 cd lemon-1.0
   110 \endverbatim
   111 This command enters the directory.
   112 
   113 \verbatim
   114 ./configure
   115 \endverbatim
   116 This command runs the configure shell script, which does some checks and
   117 creates the makefiles.
   118 
   119 \verbatim
   120 make
   121 \endverbatim
   122 This command compiles the non-template part of LEMON into <tt>libemon.a</tt>
   123 file. It also compiles the programs in the tools and demo subdirectories
   124 when enabled.
   125 
   126 \verbatim
   127 make check
   128 \endverbatim
   129 This step is optional, but recommended. It performes a bunch of library
   130 self-tests.
   131 
   132 \verbatim
   133 make install
   134 \endverbatim
   135 This command will copy the directory structure to its final destination
   136 (e.g. to \c /usr/local) so that your system can access it.
   137 This command should be issued as "root", unless you provided a
   138 \c --prefix switch to the \c configure to install the library in
   139 non-default location.
   140 
   141 Several other configure flags can be passed to <tt>./configure</tt>.
   142 For more information see the <b><tt>INSTALL</tt></b> file.
   143 
   144 [SEC]install_hg[SEC] Install the Latest Development Version
   145 
   146 You can also use the latest (developer) version of LEMON from our Mercurial
   147 repository. You need a couple additional tool for that.
   148 
   149 - <a href="http://www.selenic.com/mercurial">Mercurial</a>
   150   - for obtaining the latest code (and for contributing into it)
   151 - <a href="http://www.gnu.org/software/automake/">automake</a> (1.7 or newer)
   152 - <a href="http://www.gnu.org/software/autoconf/">autoconf</a> (2.59 or newer)
   153 - <a href="http://www.gnu.org/software/libtool/">libtool</a>
   154 - <a href="http://pkgconfig.freedesktop.org/">pkgconfig</a>
   155   - for initializing the build framework
   156 - <a href="http://doxygen.org">Doxygen</a>
   157   - for generating the documentations (optional, but recommended)
   158 
   159 Once you have all these tools installed, the process is fairly easy.
   160 First, you have to get the copy of the latest version.
   161 
   162 \verbatim
   163 hg clone http://lemon.cs.elte.hu/hg/lemon-main lemon-src
   164 \endverbatim
   165 
   166 The next step is to initialize the build system.
   167 
   168 \verbatim
   169 autoreconf -vif
   170 \endverbatim
   171 
   172 Then the process is the same as in case of using the release tarball.
   173 
   174 \verbatim
   175 ./configure
   176 make
   177 make check    # This is optional, but recommended. It runs a bunch of tests.
   178 make install
   179 \endverbatim
   180 
   181 To generate the documentation, just run
   182 \verbatim
   183 make html
   184 \endverbatim
   185 \todo Is <tt><b>make html</b></tt> really necessary after
   186 <tt><b>make install</b></tt>?
   187 
   188 
   189 [SEC]install_rpm[SEC] Install from rpm
   190 
   191 \todo Write this section (\ref install_rpm).
   192 
   193 [SEC]install_user[SEC] Install Locally to the User
   194 
   195 \todo Write this section (\ref install_user).
   196 
   197 
   198 [SEC]compile_codes[SEC] Compile Codes that Use LEMON
   199 
   200 Now let us see how to use the library after installing it.
   201 
   202 [SEC]compile_system_wide[SEC] If LEMON is Installed System-Wide
   203 
   204 If your installation of LEMON into directory \c /usr/local was
   205 successful, then you have to issue a command like this to compile a
   206 source file that uses LEMON.
   207 
   208 \verbatim
   209 g++ -lemon [other options] <source file>
   210 \endverbatim
   211 
   212 The argument <tt>-lemon</tt> tells the compiler that we are using the
   213 installed library LEMON.
   214 
   215 [SEC]compile_user_local[SEC] If LEMON is Installed User-Local
   216 
   217 You have to give more options to the compiler if LEMON is installed
   218 user-local into a directory (denoted by <tt><dir></tt>)
   219 or if you just skipped the step <tt>make install</tt>.
   220 In the later case <tt><dir></tt> denotes the directory in which the
   221 the \c make command have been performed.
   222 
   223 \verbatim
   224 g++ -lemon -I <dir> -L <dir>/lemon/.libs [other options] <source file>
   225 \endverbatim
   226 
   227 [SEC]compile_use_pkg_config[SEC] Use pkg-config
   228 
   229 \todo Write this sub-subsection (\ref compile_use_pkg_config).
   230 
   231 [TRAILER]
   232 */