[5] | 1 | Installation Instructions |
---|
| 2 | ========================= |
---|
| 3 | |
---|
[992] | 4 | This file contains instructions for building and installing LEMON from |
---|
| 5 | source on Linux. The process on Windows is similar. |
---|
[5] | 6 | |
---|
[992] | 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 | |
---|
[504] | 12 | |
---|
[318] | 13 | In order to install LEMON from the extracted source tarball you have to |
---|
[5] | 14 | issue the following commands: |
---|
| 15 | |
---|
[992] | 16 | 1. Step into the root of the source directory. |
---|
[5] | 17 | |
---|
[992] | 18 | $ cd lemon-x.y.z |
---|
[5] | 19 | |
---|
[992] | 20 | 2. Create a build subdirectory and step into it. |
---|
[5] | 21 | |
---|
[992] | 22 | $ mkdir build |
---|
| 23 | $ cd build |
---|
[5] | 24 | |
---|
[992] | 25 | 3. Perform system checks and create the makefiles. |
---|
[5] | 26 | |
---|
[992] | 27 | $ cmake .. |
---|
[5] | 28 | |
---|
[992] | 29 | 4. Build LEMON. |
---|
[5] | 30 | |
---|
[992] | 31 | $ make |
---|
[5] | 32 | |
---|
[992] | 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 |
---|
[5] | 53 | |
---|
[245] | 54 | This command installs LEMON under /usr/local (you will need root |
---|
[992] | 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' |
---|
[5] | 61 | |
---|
[245] | 62 | Configure Options and Variables |
---|
| 63 | =============================== |
---|
| 64 | |
---|
[992] | 65 | In Step 3, you can customize the build process by passing options to CMAKE. |
---|
[245] | 66 | |
---|
[992] | 67 | $ cmake [OPTIONS] .. |
---|
[245] | 68 | |
---|
[992] | 69 | You find a list of the most useful options below. |
---|
[5] | 70 | |
---|
[992] | 71 | -DCMAKE_INSTALL_PREFIX=PREFIX |
---|
[245] | 72 | |
---|
| 73 | Set the installation prefix to PREFIX. By default it is /usr/local. |
---|
[5] | 74 | |
---|
[992] | 75 | -DCMAKE_BUILD_TYPE=[Release|Debug|Maintainer|...] |
---|
[245] | 76 | |
---|
[992] | 77 | This sets the compiler options. The choices are the following |
---|
[245] | 78 | |
---|
[992] | 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. |
---|
[245] | 82 | |
---|
[992] | 83 | 'Debug': Optimization is turned off and debug info is added (-O0 |
---|
| 84 | -ggdb with gcc). If is recommended during the development. |
---|
[5] | 85 | |
---|
[992] | 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. |
---|
[5] | 90 | |
---|
[992] | 91 | 'RelWithDebInfo': Optimized build with debug info. |
---|
[5] | 92 | |
---|
[992] | 93 | 'MinSizeRel': Size optimized build (-Os with gcc) |
---|
[5] | 94 | |
---|
[992] | 95 | -DTEST_WITH_VALGRIND=YES |
---|
[5] | 96 | |
---|
[992] | 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. |
---|
[5] | 99 | |
---|
[992] | 100 | -DCMAKE_CXX_COMPILER=path-to-compiler |
---|
[5] | 101 | |
---|
[992] | 102 | Change the compiler to be used. |
---|
[5] | 103 | |
---|
[992] | 104 | -DBUILD_SHARED_LIBS=TRUE |
---|
[5] | 105 | |
---|
[992] | 106 | Build shared library instead of static one. Think twice if you |
---|
| 107 | really want to use this option. |
---|
[5] | 108 | |
---|
[1064] | 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 | |
---|
[992] | 155 | -DGLPK_ROOT_DIR=DIRECTORY |
---|
| 156 | -DCOIN_ROOT_DIR=DIRECTORY |
---|
[1062] | 157 | -DILOG_ROOT_DIR=DIRECTORY |
---|
[5] | 158 | |
---|
[1064] | 159 | Root directory prefixes of optional third party libraries. |
---|
[824] | 160 | |
---|
| 161 | Makefile Variables |
---|
| 162 | ================== |
---|
| 163 | |
---|
[992] | 164 | make VERBOSE=1 |
---|
[824] | 165 | |
---|
[992] | 166 | This results in a more verbose output by showing the full |
---|
| 167 | compiler and linker commands. |
---|