| 
alpar@5
 | 
     1  | 
Installation Instructions
  | 
| 
alpar@5
 | 
     2  | 
=========================
  | 
| 
alpar@5
 | 
     3  | 
  | 
| 
alpar@992
 | 
     4  | 
This file contains instructions for building and installing LEMON from
  | 
| 
alpar@992
 | 
     5  | 
source on Linux. The process on Windows is similar.
  | 
| 
alpar@5
 | 
     6  | 
  | 
| 
alpar@992
 | 
     7  | 
Note that it is not necessary to install LEMON in order to use
  | 
| 
alpar@992
 | 
     8  | 
it. Instead, you can easily integrate it with your own code
  | 
| 
alpar@992
 | 
     9  | 
directly. For instructions, see
  | 
| 
alpar@992
 | 
    10  | 
https://lemon.cs.elte.hu/trac/lemon/wiki/HowToCompile
  | 
| 
alpar@992
 | 
    11  | 
  | 
| 
kpeter@504
 | 
    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@992
 | 
    16  | 
   1. Step into the root of the source directory.
  | 
| 
alpar@5
 | 
    17  | 
  | 
| 
alpar@992
 | 
    18  | 
      $ cd lemon-x.y.z
  | 
| 
alpar@5
 | 
    19  | 
  | 
| 
alpar@992
 | 
    20  | 
   2. Create a build subdirectory and step into it.
  | 
| 
alpar@5
 | 
    21  | 
  | 
| 
alpar@992
 | 
    22  | 
      $ mkdir build
  | 
| 
alpar@992
 | 
    23  | 
      $ cd build
  | 
| 
alpar@5
 | 
    24  | 
  | 
| 
alpar@992
 | 
    25  | 
   3. Perform system checks and create the makefiles.
  | 
| 
alpar@5
 | 
    26  | 
  | 
| 
alpar@992
 | 
    27  | 
      $ cmake ..
  | 
| 
alpar@5
 | 
    28  | 
  | 
| 
alpar@992
 | 
    29  | 
   4. Build LEMON.
  | 
| 
alpar@5
 | 
    30  | 
  | 
| 
alpar@992
 | 
    31  | 
      $ make 
  | 
| 
alpar@5
 | 
    32  | 
  | 
| 
alpar@992
 | 
    33  | 
      This command compiles the non-template part of LEMON into
  | 
| 
alpar@992
 | 
    34  | 
      libemon.a file. It also compiles the programs in the 'tools' and
  | 
| 
alpar@992
 | 
    35  | 
      'demo' subdirectories.
  | 
| 
alpar@992
 | 
    36  | 
  | 
| 
alpar@992
 | 
    37  | 
   5. [Optional] Compile and run the self-tests.
  | 
| 
alpar@992
 | 
    38  | 
  | 
| 
alpar@992
 | 
    39  | 
      $ make check
  | 
| 
alpar@992
 | 
    40  | 
  | 
| 
alpar@992
 | 
    41  | 
   5. [Optional] Generate the user documentation.
  | 
| 
alpar@992
 | 
    42  | 
  | 
| 
alpar@992
 | 
    43  | 
      $ make html
  | 
| 
alpar@992
 | 
    44  | 
  | 
| 
alpar@992
 | 
    45  | 
      The release tarballs already include the documentation.
  | 
| 
alpar@992
 | 
    46  | 
  | 
| 
alpar@992
 | 
    47  | 
      Note that for this step you need to have the following tools
  | 
| 
alpar@992
 | 
    48  | 
      installed: Python, Doxygen, Graphviz, Ghostscript, LaTeX.
  | 
| 
alpar@992
 | 
    49  | 
  | 
| 
alpar@992
 | 
    50  | 
   6. [Optional] Install LEMON
  | 
| 
alpar@992
 | 
    51  | 
  | 
| 
alpar@992
 | 
    52  | 
      $ make install
  | 
| 
alpar@5
 | 
    53  | 
  | 
| 
ladanyi@245
 | 
    54  | 
      This command installs LEMON under /usr/local (you will need root
  | 
| 
alpar@992
 | 
    55  | 
      privileges to be able to do that). If you want to install it to
  | 
| 
alpar@992
 | 
    56  | 
      some other location, then pass the
  | 
| 
alpar@992
 | 
    57  | 
      -DCMAKE_INSTALL_PREFIX=DIRECTORY flag to cmake in Step 3.
  | 
| 
alpar@992
 | 
    58  | 
      For example:
  | 
| 
alpar@992
 | 
    59  | 
      
  | 
| 
alpar@992
 | 
    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@992
 | 
    65  | 
In Step 3, you can customize the build process by passing options to CMAKE.
  | 
| 
ladanyi@245
 | 
    66  | 
  | 
| 
alpar@992
 | 
    67  | 
$ cmake [OPTIONS] ..
  | 
| 
ladanyi@245
 | 
    68  | 
  | 
| 
alpar@992
 | 
    69  | 
You find a list of the most useful options below.
  | 
| 
alpar@5
 | 
    70  | 
  | 
| 
alpar@992
 | 
    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@992
 | 
    75  | 
-DCMAKE_BUILD_TYPE=[Release|Debug|Maintainer|...]
  | 
| 
ladanyi@245
 | 
    76  | 
  | 
| 
alpar@992
 | 
    77  | 
  This sets the compiler options. The choices are the following
  | 
| 
ladanyi@245
 | 
    78  | 
  | 
| 
alpar@992
 | 
    79  | 
  'Release': A strong optimization is turned on (-O3 with gcc). This
  | 
| 
alpar@992
 | 
    80  | 
    is the default setting and we strongly recommend using this for
  | 
| 
alpar@992
 | 
    81  | 
    the final compilation.
  | 
| 
ladanyi@245
 | 
    82  | 
  | 
| 
alpar@992
 | 
    83  | 
  'Debug': Optimization is turned off and debug info is added (-O0
  | 
| 
alpar@992
 | 
    84  | 
    -ggdb with gcc). If is recommended during the development.
  | 
| 
alpar@5
 | 
    85  | 
  | 
| 
alpar@992
 | 
    86  | 
  'Maintainer': The same as 'Debug' but the compiler warnings are
  | 
| 
alpar@992
 | 
    87  | 
    converted to errors (-Werror with gcc). In addition, 'make' will
  | 
| 
alpar@992
 | 
    88  | 
    also automatically compile and execute the test codes. It is the
  | 
| 
alpar@992
 | 
    89  | 
    best way of ensuring that LEMON codebase is clean and safe.
  | 
| 
alpar@5
 | 
    90  | 
  | 
| 
alpar@992
 | 
    91  | 
  'RelWithDebInfo': Optimized build with debug info.
  | 
| 
alpar@5
 | 
    92  | 
  | 
| 
alpar@992
 | 
    93  | 
  'MinSizeRel': Size optimized build (-Os with gcc)
  | 
| 
alpar@5
 | 
    94  | 
  | 
| 
alpar@992
 | 
    95  | 
-DTEST_WITH_VALGRIND=YES
  | 
| 
alpar@5
 | 
    96  | 
  | 
| 
alpar@992
 | 
    97  | 
  Using this, the test codes will be executed using valgrind. It is a
  | 
| 
alpar@992
 | 
    98  | 
  very effective way of identifying indexing problems and memory leaks.
  | 
| 
alpar@5
 | 
    99  | 
  | 
| 
alpar@992
 | 
   100  | 
-DCMAKE_CXX_COMPILER=path-to-compiler
  | 
| 
alpar@5
 | 
   101  | 
  | 
| 
alpar@992
 | 
   102  | 
  Change the compiler to be used.
  | 
| 
alpar@5
 | 
   103  | 
  | 
| 
alpar@992
 | 
   104  | 
-DBUILD_SHARED_LIBS=TRUE
  | 
| 
alpar@5
 | 
   105  | 
  | 
| 
alpar@992
 | 
   106  | 
  Build shared library instead of static one. Think twice if you
  | 
| 
alpar@992
 | 
   107  | 
  really want to use this option.
  | 
| 
alpar@5
 | 
   108  | 
  | 
| 
alpar@992
 | 
   109  | 
-DGLPK_ROOT_DIR=DIRECTORY
  | 
| 
alpar@992
 | 
   110  | 
-DCOIN_ROOT_DIR=DIRECTORY
  | 
| 
alpar@992
 | 
   111  | 
-DCPLEX_ROOT_DIR=DIRECTORY
  | 
| 
alpar@5
 | 
   112  | 
  | 
| 
alpar@992
 | 
   113  | 
  Install root directory prefixes of optional third party libraries.
  | 
| 
ladanyi@824
 | 
   114  | 
  | 
| 
ladanyi@824
 | 
   115  | 
Makefile Variables
  | 
| 
ladanyi@824
 | 
   116  | 
==================
  | 
| 
ladanyi@824
 | 
   117  | 
  | 
| 
alpar@992
 | 
   118  | 
make VERBOSE=1
  | 
| 
ladanyi@824
 | 
   119  | 
  | 
| 
alpar@992
 | 
   120  | 
   This results in a more verbose output by showing the full
  | 
| 
alpar@992
 | 
   121  | 
   compiler and linker commands.  |