1 Installation Instructions
 
     2 =========================
 
     4 This file contains instructions for building and installing LEMON from
 
     5 source on Linux. The process on Windows is similar.
 
     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
 
    13 In order to install LEMON from the extracted source tarball you have to
 
    14 issue the following commands:
 
    16    1. Step into the root of the source directory.
 
    20    2. Create a build subdirectory and step into it.
 
    25    3. Perform system checks and create the makefiles.
 
    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.
 
    37    5. [Optional] Compile and run the self-tests.
 
    41    5. [Optional] Generate the user documentation.
 
    45       The release tarballs already include the documentation.
 
    47       Note that for this step you need to have the following tools
 
    48       installed: Python, Doxygen, Graphviz, Ghostscript, LaTeX.
 
    50    6. [Optional] Install LEMON
 
    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.
 
    60       $ cmake -DCMAKE_INSTALL_PREFIX=/home/username/lemon'
 
    62 Configure Options and Variables
 
    63 ===============================
 
    65 In Step 3, you can customize the build process by passing options to CMAKE.
 
    69 You find a list of the most useful options below.
 
    71 -DCMAKE_INSTALL_PREFIX=PREFIX
 
    73   Set the installation prefix to PREFIX. By default it is /usr/local.
 
    75 -DCMAKE_BUILD_TYPE=[Release|Debug|Maintainer|...]
 
    77   This sets the compiler options. The choices are the following
 
    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.
 
    83   'Debug': Optimization is turned off and debug info is added (-O0
 
    84     -ggdb with gcc). If is recommended during the development.
 
    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.
 
    91   'RelWithDebInfo': Optimized build with debug info.
 
    93   'MinSizeRel': Size optimized build (-Os with gcc)
 
    95 -DTEST_WITH_VALGRIND=YES
 
    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.
 
   100 -DCMAKE_CXX_COMPILER=path-to-compiler
 
   102   Change the compiler to be used.
 
   104 -DBUILD_SHARED_LIBS=TRUE
 
   106   Build shared library instead of static one. Think twice if you
 
   107   really want to use this option.
 
   109 -DLEMON_DOC_SOURCE_BROWSER=YES
 
   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.
 
   115 -DLEMON_DOC_USE_MATHJAX=YES
 
   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.
 
   122   On the other hand, it needs either Internet access or a locally
 
   123   installed version of MathJax to properly render the doc.
 
   125 -DLEMON_DOC_MATHJAX_RELPATH=DIRECTORY
 
   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
 
   134   See http://docs.mathjax.org/en/latest/installation.html for more details.
 
   137 -DGLPK_ROOT_DIR=DIRECTORY
 
   138 -DCOIN_ROOT_DIR=DIRECTORY
 
   139 -DCPLEX_ROOT_DIR=DIRECTORY
 
   141   Install root directory prefixes of optional third party libraries.
 
   148    This results in a more verbose output by showing the full
 
   149    compiler and linker commands.