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