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