alpar@5
|
1 |
Installation Instructions
|
alpar@5
|
2 |
=========================
|
alpar@5
|
3 |
|
alpar@992
|
4 |
This file contains instructions for building and installing LEMON from
|
alpar@992
|
5 |
source on Linux. The process on Windows is similar.
|
alpar@5
|
6 |
|
alpar@992
|
7 |
Note that it is not necessary to install LEMON in order to use
|
alpar@992
|
8 |
it. Instead, you can easily integrate it with your own code
|
alpar@992
|
9 |
directly. For instructions, see
|
alpar@992
|
10 |
https://lemon.cs.elte.hu/trac/lemon/wiki/HowToCompile
|
alpar@992
|
11 |
|
kpeter@504
|
12 |
|
kpeter@318
|
13 |
In order to install LEMON from the extracted source tarball you have to
|
alpar@5
|
14 |
issue the following commands:
|
alpar@5
|
15 |
|
alpar@992
|
16 |
1. Step into the root of the source directory.
|
alpar@5
|
17 |
|
alpar@992
|
18 |
$ cd lemon-x.y.z
|
alpar@5
|
19 |
|
alpar@992
|
20 |
2. Create a build subdirectory and step into it.
|
alpar@5
|
21 |
|
alpar@992
|
22 |
$ mkdir build
|
alpar@992
|
23 |
$ cd build
|
alpar@5
|
24 |
|
alpar@992
|
25 |
3. Perform system checks and create the makefiles.
|
alpar@5
|
26 |
|
alpar@992
|
27 |
$ cmake ..
|
alpar@5
|
28 |
|
alpar@992
|
29 |
4. Build LEMON.
|
alpar@5
|
30 |
|
alpar@992
|
31 |
$ make
|
alpar@5
|
32 |
|
alpar@992
|
33 |
This command compiles the non-template part of LEMON into
|
alpar@992
|
34 |
libemon.a file. It also compiles the programs in the 'tools' and
|
alpar@992
|
35 |
'demo' subdirectories.
|
alpar@992
|
36 |
|
alpar@992
|
37 |
5. [Optional] Compile and run the self-tests.
|
alpar@992
|
38 |
|
alpar@992
|
39 |
$ make check
|
alpar@992
|
40 |
|
alpar@992
|
41 |
5. [Optional] Generate the user documentation.
|
alpar@992
|
42 |
|
alpar@992
|
43 |
$ make html
|
alpar@992
|
44 |
|
alpar@992
|
45 |
The release tarballs already include the documentation.
|
alpar@992
|
46 |
|
alpar@992
|
47 |
Note that for this step you need to have the following tools
|
alpar@992
|
48 |
installed: Python, Doxygen, Graphviz, Ghostscript, LaTeX.
|
alpar@992
|
49 |
|
alpar@992
|
50 |
6. [Optional] Install LEMON
|
alpar@992
|
51 |
|
alpar@992
|
52 |
$ make install
|
alpar@5
|
53 |
|
ladanyi@245
|
54 |
This command installs LEMON under /usr/local (you will need root
|
alpar@992
|
55 |
privileges to be able to do that). If you want to install it to
|
alpar@992
|
56 |
some other location, then pass the
|
alpar@992
|
57 |
-DCMAKE_INSTALL_PREFIX=DIRECTORY flag to cmake in Step 3.
|
alpar@992
|
58 |
For example:
|
alpar@992
|
59 |
|
alpar@992
|
60 |
$ cmake -DCMAKE_INSTALL_PREFIX=/home/username/lemon'
|
alpar@5
|
61 |
|
ladanyi@245
|
62 |
Configure Options and Variables
|
ladanyi@245
|
63 |
===============================
|
ladanyi@245
|
64 |
|
alpar@992
|
65 |
In Step 3, you can customize the build process by passing options to CMAKE.
|
ladanyi@245
|
66 |
|
alpar@992
|
67 |
$ cmake [OPTIONS] ..
|
ladanyi@245
|
68 |
|
alpar@992
|
69 |
You find a list of the most useful options below.
|
alpar@5
|
70 |
|
alpar@992
|
71 |
-DCMAKE_INSTALL_PREFIX=PREFIX
|
ladanyi@245
|
72 |
|
ladanyi@245
|
73 |
Set the installation prefix to PREFIX. By default it is /usr/local.
|
alpar@5
|
74 |
|
alpar@992
|
75 |
-DCMAKE_BUILD_TYPE=[Release|Debug|Maintainer|...]
|
ladanyi@245
|
76 |
|
alpar@992
|
77 |
This sets the compiler options. The choices are the following
|
ladanyi@245
|
78 |
|
alpar@992
|
79 |
'Release': A strong optimization is turned on (-O3 with gcc). This
|
alpar@992
|
80 |
is the default setting and we strongly recommend using this for
|
alpar@992
|
81 |
the final compilation.
|
ladanyi@245
|
82 |
|
alpar@992
|
83 |
'Debug': Optimization is turned off and debug info is added (-O0
|
alpar@992
|
84 |
-ggdb with gcc). If is recommended during the development.
|
alpar@5
|
85 |
|
alpar@992
|
86 |
'Maintainer': The same as 'Debug' but the compiler warnings are
|
alpar@992
|
87 |
converted to errors (-Werror with gcc). In addition, 'make' will
|
alpar@992
|
88 |
also automatically compile and execute the test codes. It is the
|
alpar@992
|
89 |
best way of ensuring that LEMON codebase is clean and safe.
|
alpar@5
|
90 |
|
alpar@992
|
91 |
'RelWithDebInfo': Optimized build with debug info.
|
alpar@5
|
92 |
|
alpar@992
|
93 |
'MinSizeRel': Size optimized build (-Os with gcc)
|
alpar@5
|
94 |
|
alpar@992
|
95 |
-DTEST_WITH_VALGRIND=YES
|
alpar@5
|
96 |
|
alpar@992
|
97 |
Using this, the test codes will be executed using valgrind. It is a
|
alpar@992
|
98 |
very effective way of identifying indexing problems and memory leaks.
|
alpar@5
|
99 |
|
alpar@992
|
100 |
-DCMAKE_CXX_COMPILER=path-to-compiler
|
alpar@5
|
101 |
|
alpar@992
|
102 |
Change the compiler to be used.
|
alpar@5
|
103 |
|
alpar@992
|
104 |
-DBUILD_SHARED_LIBS=TRUE
|
alpar@5
|
105 |
|
alpar@992
|
106 |
Build shared library instead of static one. Think twice if you
|
alpar@992
|
107 |
really want to use this option.
|
alpar@5
|
108 |
|
alpar@1064
|
109 |
-DLEMON_DOC_SOURCE_BROWSER=YES
|
alpar@1064
|
110 |
|
alpar@1064
|
111 |
Include the browsable cross referenced LEMON source code into the
|
alpar@1064
|
112 |
doc. It makes the doc quite bloated, but may be useful for
|
alpar@1064
|
113 |
developing LEMON itself.
|
alpar@1064
|
114 |
|
alpar@1064
|
115 |
-DLEMON_DOC_USE_MATHJAX=YES
|
alpar@1064
|
116 |
|
alpar@1064
|
117 |
Use MathJax (http://mathjax.org) for rendering the math formulae in
|
alpar@1064
|
118 |
the doc. It of much higher quality compared to the default LaTeX
|
alpar@1064
|
119 |
generated static images and it allows copy&paste of the formulae to
|
alpar@1064
|
120 |
LaTeX, Open Office, MS Word etc. documents.
|
alpar@1064
|
121 |
|
alpar@1064
|
122 |
On the other hand, it needs either Internet access or a locally
|
alpar@1064
|
123 |
installed version of MathJax to properly render the doc.
|
alpar@1064
|
124 |
|
alpar@1064
|
125 |
-DLEMON_DOC_MATHJAX_RELPATH=DIRECTORY
|
alpar@1064
|
126 |
|
alpar@1064
|
127 |
The location of the MathJax library. It defaults to
|
alpar@1064
|
128 |
http://www.mathjax.org/mathjax, which necessitates Internet access
|
alpar@1064
|
129 |
for proper rendering. The easiest way to make it usable offline is
|
alpar@1064
|
130 |
to set this parameter to 'mathjax' and copy all files of the MathJax
|
alpar@1064
|
131 |
library into the 'doc/html/mathjax' subdirectory of the build
|
alpar@1064
|
132 |
location.
|
alpar@1064
|
133 |
|
alpar@1064
|
134 |
See http://docs.mathjax.org/en/latest/installation.html for more details.
|
alpar@1064
|
135 |
|
alpar@1064
|
136 |
|
alpar@1064
|
137 |
-DLEMON_ENABLE_GLPK=NO
|
alpar@1064
|
138 |
-DLEMON_ENABLE_COIN=NO
|
alpar@1064
|
139 |
-DLEMON_ENABLE_ILOG=NO
|
alpar@1064
|
140 |
|
alpar@1064
|
141 |
Enable optional third party libraries. They are all enabled by default.
|
alpar@1064
|
142 |
|
alpar@1064
|
143 |
-DLEMON_DEFAULT_LP=GLPK
|
alpar@1064
|
144 |
|
alpar@1064
|
145 |
Sets the default LP solver backend. The supported values are
|
alpar@1064
|
146 |
CPLEX, CLP and GLPK. By default, it is set to the first one which
|
alpar@1064
|
147 |
is enabled and succesfully discovered.
|
alpar@1064
|
148 |
|
alpar@1064
|
149 |
-DLEMON_DEFAULT_MIP=GLPK
|
alpar@1064
|
150 |
|
alpar@1064
|
151 |
Sets the default MIP solver backend. The supported values are
|
alpar@1064
|
152 |
CPLEX, CBC and GLPK. By default, it is set to the first one which
|
alpar@1064
|
153 |
is enabled and succesfully discovered.
|
alpar@1064
|
154 |
|
alpar@992
|
155 |
-DGLPK_ROOT_DIR=DIRECTORY
|
alpar@992
|
156 |
-DCOIN_ROOT_DIR=DIRECTORY
|
alpar@1062
|
157 |
-DILOG_ROOT_DIR=DIRECTORY
|
alpar@5
|
158 |
|
alpar@1064
|
159 |
Root directory prefixes of optional third party libraries.
|
ladanyi@824
|
160 |
|
ladanyi@824
|
161 |
Makefile Variables
|
ladanyi@824
|
162 |
==================
|
ladanyi@824
|
163 |
|
alpar@992
|
164 |
make VERBOSE=1
|
ladanyi@824
|
165 |
|
alpar@992
|
166 |
This results in a more verbose output by showing the full
|
alpar@992
|
167 |
compiler and linker commands. |