INSTALL
 author Peter Kovacs Thu, 01 Nov 2018 11:27:05 +0100 changeset 1197 f179aa1045a4 parent 1040 60c0c3ed8d11 parent 1064 fc3854d936f7 permissions -rw-r--r--
Suppress unused typdef warnings (#615)
     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.