COIN-OR::LEMON - Graph Library

source: lemon-tutorial/install.dox @ 18:a291609dad52

Last change on this file since 18:a291609dad52 was 18:a291609dad52, checked in by Peter Kovacs <kpeter@…>, 11 years ago

Fix compilation instructions for user-local installation

File size: 7.3 KB
Line 
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
22In this section we detail how to start using LEMON, from downloading it
23to your computer, through the steps of installation, to showing how to
24compile programs that use LEMON. We assume that you
25have a basic knowledge of your operating system and C++ programming
26language. The procedure is pretty straightforward, but if you have any
27difficulties 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
32In LEMON we use C++ templates heavily, thus compilation takes a
33considerable amount of time and memory. So some decent box would be
34advantageousm, but otherwise there are no special hardware requirements.
35
36You will need a recent C++ compiler. Our primary target is the GNU C++
37Compiler (g++), from version 3.3 upwards. We also checked the Intel C++
38Compiler (icc) and Microsoft Visual C++ (on Windows).
39If you want to develop with LEMON under Windows, you can use a Windows
40installer or you can consider using Cygwin.
41
42In this description we will suppose a Linux environment and GNU C++ Compiler.
43If you would like to develop under Windows and use a Windows installer,
44you could skip the following sections and continue reading
45\ref basic_concepts.
46However keep in mind that you have to make appropriate steps instead of
47the instructions detailed here to be able to use LEMON with your compiler.
48
49[SEC]requirements_lp[SEC] LP Solver Requirements
50
51The LEMON LP solver interface can use the GLPK (GNU Linear Programming
52Kit), CPLEX and SoPlex solver. If you want to use it, you will need at
53least one of these.
54See 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
58You can download LEMON from the web site:
59<a href="http://lemon.cs.elte.hu/">http://lemon.cs.elte.hu/</a>.
60There you will find released versions in form of <tt>.tar.gz</tt> files
61(and Windows installers).
62If you want a developer version (for example you want to contribute in
63developing LEMON) then you might want to use our Mercurial repository.
64This case is detailed \ref install_hg "later", so from now on we
65suppose that you downloaded a <tt>.tar.gz</tt> file.
66
67Thus you have to do the following steps.
68
69Download the tarball either from the browser or just issuing
70
71\verbatim
72wget 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
76y and \c z (which is missing if it is 0) are numbers indicating the
77version of the library, in our example we will have
78<tt>lemon-1.0.tar.gz</tt>.
79
80Then issue the following commands:
81
82\verbatim
83tar xvzf lemon-1.0.tar.gz
84cd lemon-1.0
85./configure
86make
87make check    # This is optional, but recommended. It runs a bunch of tests.
88make install
89\endverbatim
90
91These commands install LEMON under \c /usr/local (you will
92need root privileges to be able to install to that
93directory). If you want to install it to some other place, then
94pass the \c --prefix=DIRECTORY flag to <tt>./configure</tt>, for example:
95
96\verbatim
97./configure --prefix=/home/username/lemon
98\endverbatim
99
100We briefly explain these commands below.
101
102\verbatim
103tar xvzf lemon-1.0.tar.gz
104\endverbatim
105This command untars the <tt>tar.gz</tt> file into a directory named
106<tt>lemon-1.0</tt>.
107
108\verbatim
109cd lemon-1.0
110\endverbatim
111This command enters the directory.
112
113\verbatim
114./configure
115\endverbatim
116This command runs the configure shell script, which does some checks and
117creates the makefiles.
118
119\verbatim
120make
121\endverbatim
122This command compiles the non-template part of LEMON into <tt>libemon.a</tt>
123file. It also compiles the programs in the tools and demo subdirectories
124when enabled.
125
126\verbatim
127make check
128\endverbatim
129This step is optional, but recommended. It performes a bunch of library
130self-tests.
131
132\verbatim
133make install
134\endverbatim
135This command will copy the directory structure to its final destination
136(e.g. to \c /usr/local) so that your system can access it.
137This command should be issued as "root", unless you provided a
138\c --prefix switch to the \c configure to install the library in
139non-default location.
140
141Several other configure flags can be passed to <tt>./configure</tt>.
142For more information see the <b><tt>INSTALL</tt></b> file.
143
144[SEC]install_hg[SEC] Install the Latest Development Version
145
146You can also use the latest (developer) version of LEMON from our Mercurial
147repository. 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
159Once you have all these tools installed, the process is fairly easy.
160First, you have to get the copy of the latest version.
161
162\verbatim
163hg clone http://lemon.cs.elte.hu/hg/lemon-main lemon-src
164\endverbatim
165
166The next step is to initialize the build system.
167
168\verbatim
169autoreconf -vif
170\endverbatim
171
172Then the process is the same as in case of using the release tarball.
173
174\verbatim
175./configure
176make
177make check    # This is optional, but recommended. It runs a bunch of tests.
178make install
179\endverbatim
180
181To generate the documentation, just run
182\verbatim
183make 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
200Now 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
204If your installation of LEMON into directory \c /usr/local was
205successful, then you have to issue a command like this to compile a
206source file that uses LEMON.
207
208\verbatim
209g++ -lemon [other options] <source file>
210\endverbatim
211
212The argument <tt>-lemon</tt> tells the compiler that we are using the
213installed library LEMON.
214
215[SEC]compile_user_local[SEC] If LEMON is Installed User-Local
216
217You have to give more options to the compiler if LEMON is installed
218user-local into a directory (denoted by <tt>&lt;dir&gt;</tt>).
219
220\verbatim
221g++ -lemon -I <dir>/include -L <dir>/lib [other options] <source file>
222\endverbatim
223
224[SEC]compile_use_pkg_config[SEC] Use pkg-config
225
226\todo Write this sub-subsection (\ref compile_use_pkg_config).
227
228[TRAILER]
229*/
Note: See TracBrowser for help on using the repository browser.