# 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)