# Installation

Although `xtensor` is a header-only library, we provide standardized means to install it, with package managers or with cmake.

Besides the xtensor headers, all these methods place the `cmake` project configuration file in the right location so that third-party projects can use cmake’s `find_package` to locate xtensor headers.

## Using the conda-forge package

A package for xtensor is available on the mamba (or conda) package manager.

    mamba install -c conda-forge xtensor

## Using the Debian package

A package for xtensor is available on Debian.

    sudo apt-get install xtensor-dev

## Using the Spack package

A package for xtensor is available on the Spack package manager.

    spack install xtensor
    spack load --dependencies xtensor

## From source with cmake

You can also install `xtensor` from source with cmake. This requires that you have the xtl library installed on your system. On Unix platforms, from the source directory:

    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=path_to_prefix ..
    make install

On Windows platforms, from the source directory:

    mkdir build
    cd build
    cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=path_to_prefix ..
    nmake
    nmake install

`path_to_prefix` is the absolute path to the folder where cmake searches for dependencies and installs libraries. `xtensor` installation from cmake assumes this folder contains `include` and `lib` subfolders.

See the Build and configuration section for more details about cmake options.

Although not officially supported, `xtensor` can be installed with MinGW:

    mkdir build
    cd build
    cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=path_to_prefix ..
    mingw32-make
    mingw32-make install

## Including xtensor in your project

The different packages of `xtensor` are built with cmake, so whatever the installation mode you choose, you can add `xtensor` to your project using cmake:

    find_package(xtensor REQUIRED)
    target_include_directories(your_target PUBLIC ${xtensor_INCLUDE_DIRS})
    target_link_libraries(your_target PUBLIC xtensor)