| 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 | -DGLPK_ROOT_DIR=DIRECTORY | 
|---|
| 138 | -DCOIN_ROOT_DIR=DIRECTORY | 
|---|
| 139 | -DCPLEX_ROOT_DIR=DIRECTORY | 
|---|
| 140 |  | 
|---|
| 141 | Install root directory prefixes of optional third party libraries. | 
|---|
| 142 |  | 
|---|
| 143 | Makefile Variables | 
|---|
| 144 | ================== | 
|---|
| 145 |  | 
|---|
| 146 | make VERBOSE=1 | 
|---|
| 147 |  | 
|---|
| 148 | This results in a more verbose output by showing the full | 
|---|
| 149 | compiler and linker commands. | 
|---|