INSTALL
author Peter Kovacs <kpeter@inf.elte.hu>
Thu, 17 Oct 2013 09:29:37 +0200
changeset 1296 330264b171cf
parent 1148 78434a448b5e
child 1233 490d89913a17
permissions -rw-r--r--
Fix debug checking + simplify lower bound handling (#478)
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@1208
   109
-DLEMON_DOC_SOURCE_BROWSER=YES
alpar@1208
   110
alpar@1208
   111
  Include the browsable cross referenced LEMON source code into the
alpar@1208
   112
  doc. It makes the doc quite bloated, but may be useful for
alpar@1208
   113
  developing LEMON itself.
alpar@1208
   114
alpar@1208
   115
-DLEMON_DOC_USE_MATHJAX=YES
alpar@1208
   116
alpar@1208
   117
  Use MathJax (http://mathjax.org) for rendering the math formulae in
alpar@1208
   118
  the doc.  It of much higher quality compared to the default LaTeX
alpar@1208
   119
  generated static images and it allows copy&paste of the formulae to
alpar@1208
   120
  LaTeX, Open Office, MS Word etc. documents.
alpar@1208
   121
alpar@1208
   122
  On the other hand, it needs either Internet access or a locally
alpar@1208
   123
  installed version of MathJax to properly render the doc.
alpar@1208
   124
alpar@1208
   125
-DLEMON_DOC_MATHJAX_RELPATH=DIRECTORY
alpar@1208
   126
  
alpar@1208
   127
  The location of the MathJax library. It defaults to
alpar@1208
   128
  http://www.mathjax.org/mathjax, which necessitates Internet access
alpar@1208
   129
  for proper rendering. The easiest way to make it usable offline is
alpar@1208
   130
  to set this parameter to 'mathjax' and copy all files of the MathJax
alpar@1208
   131
  library into the 'doc/html/mathjax' subdirectory of the build
alpar@1208
   132
  location.
alpar@1208
   133
alpar@1208
   134
  See http://docs.mathjax.org/en/latest/installation.html for more details.
alpar@1208
   135
alpar@1208
   136
  
alpar@1148
   137
-DGLPK_ROOT_DIR=DIRECTORY
alpar@1148
   138
-DCOIN_ROOT_DIR=DIRECTORY
alpar@1148
   139
-DCPLEX_ROOT_DIR=DIRECTORY
alpar@5
   140
alpar@1148
   141
  Install root directory prefixes of optional third party libraries.
ladanyi@890
   142
ladanyi@890
   143
Makefile Variables
ladanyi@890
   144
==================
ladanyi@890
   145
alpar@1148
   146
make VERBOSE=1
ladanyi@890
   147
alpar@1148
   148
   This results in a more verbose output by showing the full
alpar@1148
   149
   compiler and linker commands.