# Installation¶

## Compiling¶

The library uses c++11 and requires Boost with version 1.48.0 or more recent. It is a multi-platform library and compiles on Linux, Mac OSX and Visual Studio 2015. It also requires cmake to generate makefiles, and cython to compile the library.

On Windows , only Python 3.5 and 3.6 are available because of the required Visual Studio version.

On other systems, if you have several Python/cython installed, the version 2.X will be used by default, but you can force it by adding -DPython_ADDITIONAL_VERSIONS=3 to the cmake command.

### GUDHI Cythonization¶

To build the GUDHI cython module, run the following commands in a terminal:

cd /path-to-gudhi/
mkdir build
cd build/
cmake ..
make cython


### Test suites¶

To test your build, py.test is optional. Run the following command in a terminal:

cd /path-to-gudhi/build/cython
# For windows, you have to set PYTHONPATH environment variable
export PYTHONPATH='\$PYTHONPATH:/path-to-gudhi/build/cython'
ctest -R py_test


### Documentation¶

To build the documentation, sphinx-doc is required. Please refer to conf.py file to see which sphinx-doc modules are required to generate the documentation. Run the following commands in a terminal:

make sphinx


## Optional third-party library¶

### CGAL¶

The Alpha complex, Tangential complex and Witness complex data structures, and Bottleneck distance requires CGAL, which is a C++ library which provides easy access to efficient and reliable geometric algorithms.

Having CGAL, the Computational Geometry Algorithms Library, version 4.7.0 or higher installed is recommended. The procedure to install this library according to your operating system is detailed here.

The following examples requires CGAL version ≥ 4.7.0:

The following examples requires CGAL version ≥ 4.8.0:

The following examples requires CGAL version ≥ 4.8.1:

### Eigen3¶

The Alpha complex, Tangential complex and Witness complex data structures and few examples requires Eigen3, a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

The following examples require the Eigen3:

### Matplotlib¶

The persistence graphical tools module requires Matplotlib, a Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.

The following examples require the Matplotlib: