# Installation {#installation} In this section, we describe how to configure, build, and install the pmp-library in detail. ## System Requirements The pmp-library uses [CMake](http://www.cmake.org) as its build configuration system. Version 3.0.2 or greater is required. The pmp-library requires a C++11-compliant compiler. We continuously build and test the pmp-library with the following compilers and operating systems: Operating System | Compiler -----------------|-------------------- Linux | gcc 4.8.4, clang 3.9.0 Mac OS-X | AppleClang 8.1.0 Windows | Visual Studio 2015, 2017 ## Dependencies Some parts of the pmp-library depends on the following third-party libraries: Library | Description | Version ------------------------------------------|-----------------------------------|-------------- [Eigen](http://eigen.tuxfamily.org) | C++ linear algebra library | ≥ 3.3.7 [OpenGL](http://opengl.org) | Open Graphics Library | ≥ 3.3 [GLEW](http://glew.sourceforge.net) | OpenGL Extension Wrangler Library | ≥ 2.1.0 [GLFW](http://glfw.org) | Graphics Library Framework | ≥ 3.3 [ImGui](https://github.com/ocornut/imgui) | Immediate Mode GUI | ≥ 1.70 [Google Test](https://github.com/google/googletest) | C++ Test Framework | ≥ 1.8.0 By default, we include the corresponding libraries using git submodules. Note that OpenGL and related dependencies are optional. They are only needed if you want to use the viewer classes. Google Test is optional as well and only required if you want to run the unit test suite. ## Configuration The pmp-library relies on [CMake](http://www.cmake.org) as its build and configuration system. `CMake` is a cross-platform build-system capable of generating different build files (so-called _generators_) for a specific platform, e.g., Makefiles for Linux/Unix, Xcode projects for Mac OS-X and Visual Studio projects for Windows. On the command line change to the top-level pmp-library directory, create a build directory and run `cmake`: cd pmp mkdir build cd build cmake .. The configuration procedure can be fine-tuned by specifying flags using the `-D` option of `cmake`: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=/usr/bin/g++ The command above would configure `CMake` to use release mode as its build type and `/usr/bin/g++` as its C++ compiler. In order to compile the included examples configure `CMake` with cmake -DWITH_EXAMPLES=true .. Commonly used flags are shown below. Flag | Description ---------------------|------------------------------------------------- `CMAKE_BUILD_TYPE` | Specify the build type, e.g. Debug or Release. `CMAKE_CXX_COMPILER` | Specify the compiler to be used. `CMAKE_CXX_FLAGS` | Specify additional compiler flags, e.g. `-DNDEBUG` For additional information on using `CMake` and customizing its configuration see the [CMake documentation](http://cmake.org/cmake/help/documentation.html). ## Building After successful configuration pmp-library can be build using the chosen build system. For a Unix-like environment the default generator is Makefiles. In order to build pmp-library just call make from the top-level build directory. In order to build pmp in parallel use the `-j` option of `make`: make -j The resulting library is named `libpmp.so` and located in the current working directory. In order to build the full HTML manual and reference documentation call make doxygen The resulting HTML documentation can be found in the `docs/html/` sub-directory. Note: this requires [Doxygen](http://www.doxygen.nl/) to be installed. ## Installation In order to install pmp-library just call sudo make install Upon installation, both the library and headers will be installed to the directory given via `CMAKE_INSTALL_PREFIX`, which defaults to `/usr/local/` on Unix-like systems. If you need to install to a custom location set the install prefix during build configuration: cmake -DCMAKE_INSTALL_PREFIX=<your custom path> .. The library can be uninstalled using make uninstall To use the pmp-library in your own CMake-based projects simply include the library by using `find_package(pmp)` and point CMake to the directory containing the pmp-library CMake configuration file `pmpConfig.cmake`. This can be either the pmp-library build directory cmake -Dpmp_DIR=<path-to-pmp-build-directory> or the installed version cmake -Dpmp_DIR=<your custom path>/lib/cmake/pmp This way, you can simply link your own target against pmp-library target_link_libraries(your_target pmp) ### Note The usage described above is currently limited to the @ref core and @ref algorithms modules of the pmp-library. If you want to use the @ref visualization module you need to link your target against `pmp_vis` and its dependencies: `stb_image`, `imgui`, `glfw`, `glew`, as well as your platform OpenGL library. In this case, however, we recommend to use the [project template](https://github.com/pmp-library/pmp-template), see also [Quickstart](quickstart.html) . ## Build Options ### Index Type By default, the pmp-libray uses 32-bit unsigned integers as internal index type to reference entities. However, if you need to process very large data sets this might not be sufficient. In this case, you can change the index type to be 64-bit by specifying cmake -DPMP_INDEX_TYPE=64 during build configuration. ### Scalar Type By default, the pmp-library uses `float` as `Scalar` type. In case you require higher floating point precision you can change the `Scalar` type to `double` by specifying cmake -DPMP_SCALAR_TYPE=64 during build configuration. ## Building Bundled JavaScript Applications In order to build the JavaScript applications using [emscripten](https://github.com/kripken/emscripten), download the SDK from <https://github.com/kripken/emscripten> and follow the installation instructions. Next, source the environment setup script: source <path_to_install_dir>/emsdk_env.sh Create a build directory, run cmake, build, enjoy: mkdir jsbuild cd jsbuild emconfigure cmake .. make <your-browser> mview.html