# Installation

## Using cmake

The easiest way to compile gibbs2 is by using cmake. Change to the gibbs2 root directory and make a subdirectory for the compilation:

mkdir build
cd build


Then do:

cmake ..
make


This creates the binary in build/src/gibbs2. You can copy this binary to a location in your PATH or create a symlink.

You can tweak the compilation options using one of the multiple cmake interfaces, like ccmake (use ccmake .. from the build directory). To compile a static version of gibbs2, use:

cmake .. -DBUILD_STATIC=ON


This version can be copied to a different computer (with the same architecture), even if it does not have the compiler libraries. To compile a version with debug flags,

cmake .. -DCMAKE_BUILD_TYPE=Debug


## Using make

Alternatively, you can compile the program using the provided Makefile in the source directory. To do this, enter the src/ directory and edit the Makefile.inc file. This file is included in the actual Makefile and contains the description of the compiler and its options. By default, the GNU fortran compiler (gfortran) is used. Uncomment the sections of the Makefile.inc file corresponding to your compiler (or create your own):

# The GNU fortran compiler (gfortran)
ifeq (\$(DEBUG),1)
FC = gfortran
FCFLAGS = -g -fbounds-check -Wall -Wunused-parameter -ffpe-trap=invalid -fbacktrace -fdump-core
LDFLAGS =
AR = ar
EXE =
else
FC = gfortran
FCFLAGS = -O3
LDFLAGS =
AR = ar
EXE =
endif


The variable FC is the name of the fortran90 compiler, FCFLAGS are the compiler flags and LDFLAGS are the linker flags. (The first part of the ifeq corresponds to the debug compilation.)

Once the Makefile.inc is ready, compile gibbs2 using:

make


This generates a gibbs2 binary in src/ that can be moved into a PATH location or symlinked. To compile the debug version, do:

make debug


The name of the debug binary file is gibbs2_dbg. Other make options are:

make clean
make veryclean
make mrproper


These remove the objects (clean), objects and static libraries (veryclean) and objects, libraries and binaries (mrproper).