INSTALL
author Alpar Juttner <alpar@cs.elte.hu>
Thu, 21 Jan 2021 18:58:37 +0100
changeset 1429 eba5aa390aca
parent 1208 60c0c3ed8d11
parent 1232 fc3854d936f7
permissions -rw-r--r--
Merge #640
     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.