alpar@5: Installation Instructions
alpar@5: =========================
alpar@5: 
alpar@1148: This file contains instructions for building and installing LEMON from
alpar@1148: source on Linux. The process on Windows is similar.
alpar@5: 
alpar@1148: Note that it is not necessary to install LEMON in order to use
alpar@1148: it. Instead, you can easily integrate it with your own code
alpar@1148: directly. For instructions, see
alpar@1148: https://lemon.cs.elte.hu/trac/lemon/wiki/HowToCompile
alpar@1148: 
kpeter@526: 
kpeter@318: In order to install LEMON from the extracted source tarball you have to
alpar@5: issue the following commands:
alpar@5: 
alpar@1148:    1. Step into the root of the source directory.
alpar@5: 
alpar@1148:       $ cd lemon-x.y.z
alpar@5: 
alpar@1148:    2. Create a build subdirectory and step into it.
alpar@5: 
alpar@1148:       $ mkdir build
alpar@1148:       $ cd build
alpar@5: 
alpar@1148:    3. Perform system checks and create the makefiles.
alpar@5: 
alpar@1148:       $ cmake ..
alpar@5: 
alpar@1148:    4. Build LEMON.
alpar@5: 
alpar@1148:       $ make 
alpar@5: 
alpar@1148:       This command compiles the non-template part of LEMON into
alpar@1148:       libemon.a file. It also compiles the programs in the 'tools' and
alpar@1148:       'demo' subdirectories.
alpar@1148: 
alpar@1148:    5. [Optional] Compile and run the self-tests.
alpar@1148: 
alpar@1148:       $ make check
alpar@1148: 
alpar@1148:    5. [Optional] Generate the user documentation.
alpar@1148: 
alpar@1148:       $ make html
alpar@1148: 
alpar@1148:       The release tarballs already include the documentation.
alpar@1148: 
alpar@1148:       Note that for this step you need to have the following tools
alpar@1148:       installed: Python, Doxygen, Graphviz, Ghostscript, LaTeX.
alpar@1148: 
alpar@1148:    6. [Optional] Install LEMON
alpar@1148: 
alpar@1148:       $ make install
alpar@5: 
ladanyi@245:       This command installs LEMON under /usr/local (you will need root
alpar@1148:       privileges to be able to do that). If you want to install it to
alpar@1148:       some other location, then pass the
alpar@1148:       -DCMAKE_INSTALL_PREFIX=DIRECTORY flag to cmake in Step 3.
alpar@1148:       For example:
alpar@1148:       
alpar@1148:       $ cmake -DCMAKE_INSTALL_PREFIX=/home/username/lemon'
alpar@5: 
ladanyi@245: Configure Options and Variables
ladanyi@245: ===============================
ladanyi@245: 
alpar@1148: In Step 3, you can customize the build process by passing options to CMAKE.
ladanyi@245: 
alpar@1148: $ cmake [OPTIONS] ..
ladanyi@245: 
alpar@1148: You find a list of the most useful options below.
alpar@5: 
alpar@1148: -DCMAKE_INSTALL_PREFIX=PREFIX
ladanyi@245: 
ladanyi@245:   Set the installation prefix to PREFIX. By default it is /usr/local.
alpar@5: 
alpar@1148: -DCMAKE_BUILD_TYPE=[Release|Debug|Maintainer|...]
ladanyi@245: 
alpar@1148:   This sets the compiler options. The choices are the following
ladanyi@245: 
alpar@1148:   'Release': A strong optimization is turned on (-O3 with gcc). This
alpar@1148:     is the default setting and we strongly recommend using this for
alpar@1148:     the final compilation.
ladanyi@245: 
alpar@1148:   'Debug': Optimization is turned off and debug info is added (-O0
alpar@1148:     -ggdb with gcc). If is recommended during the development.
alpar@5: 
alpar@1148:   'Maintainer': The same as 'Debug' but the compiler warnings are
alpar@1148:     converted to errors (-Werror with gcc). In addition, 'make' will
alpar@1148:     also automatically compile and execute the test codes. It is the
alpar@1148:     best way of ensuring that LEMON codebase is clean and safe.
alpar@5: 
alpar@1148:   'RelWithDebInfo': Optimized build with debug info.
alpar@5: 
alpar@1148:   'MinSizeRel': Size optimized build (-Os with gcc)
alpar@5: 
alpar@1148: -DTEST_WITH_VALGRIND=YES
alpar@5: 
alpar@1148:   Using this, the test codes will be executed using valgrind. It is a
alpar@1148:   very effective way of identifying indexing problems and memory leaks.
alpar@5: 
alpar@1148: -DCMAKE_CXX_COMPILER=path-to-compiler
alpar@5: 
alpar@1148:   Change the compiler to be used.
alpar@5: 
alpar@1148: -DBUILD_SHARED_LIBS=TRUE
alpar@5: 
alpar@1148:   Build shared library instead of static one. Think twice if you
alpar@1148:   really want to use this option.
alpar@5: 
alpar@1208: -DLEMON_DOC_SOURCE_BROWSER=YES
alpar@1208: 
alpar@1208:   Include the browsable cross referenced LEMON source code into the
alpar@1208:   doc. It makes the doc quite bloated, but may be useful for
alpar@1208:   developing LEMON itself.
alpar@1208: 
alpar@1208: -DLEMON_DOC_USE_MATHJAX=YES
alpar@1208: 
alpar@1208:   Use MathJax (http://mathjax.org) for rendering the math formulae in
alpar@1208:   the doc.  It of much higher quality compared to the default LaTeX
alpar@1208:   generated static images and it allows copy&paste of the formulae to
alpar@1208:   LaTeX, Open Office, MS Word etc. documents.
alpar@1208: 
alpar@1208:   On the other hand, it needs either Internet access or a locally
alpar@1208:   installed version of MathJax to properly render the doc.
alpar@1208: 
alpar@1208: -DLEMON_DOC_MATHJAX_RELPATH=DIRECTORY
alpar@1208:   
alpar@1208:   The location of the MathJax library. It defaults to
alpar@1208:   http://www.mathjax.org/mathjax, which necessitates Internet access
alpar@1208:   for proper rendering. The easiest way to make it usable offline is
alpar@1208:   to set this parameter to 'mathjax' and copy all files of the MathJax
alpar@1208:   library into the 'doc/html/mathjax' subdirectory of the build
alpar@1208:   location.
alpar@1208: 
alpar@1208:   See http://docs.mathjax.org/en/latest/installation.html for more details.
alpar@1208: 
alpar@1208:   
alpar@1148: -DGLPK_ROOT_DIR=DIRECTORY
alpar@1148: -DCOIN_ROOT_DIR=DIRECTORY
alpar@1148: -DCPLEX_ROOT_DIR=DIRECTORY
alpar@5: 
alpar@1148:   Install root directory prefixes of optional third party libraries.
ladanyi@890: 
ladanyi@890: Makefile Variables
ladanyi@890: ==================
ladanyi@890: 
alpar@1148: make VERBOSE=1
ladanyi@890: 
alpar@1148:    This results in a more verbose output by showing the full
alpar@1148:    compiler and linker commands.