Build and configuration

Build

xtensor build supports the following options:

  • BUILD_TESTS: enables the xtest and xbenchmark targets (see below).

  • DOWNLOAD_GTEST: downloads gtest and builds it locally instead of using a binary installation.

  • GTEST_SRC_DIR: indicates where to find the gtest sources instead of downloading them.

  • XTENSOR_ENABLE_ASSERT: activates the assertions in xtensor.

  • XTENSOR_CHECK_DIMENSION: turns on XTENSOR_ENABLE_ASSERT and activates dimension checks in xtensor. Note that the dimensions check should not be activated if you expect operator() to perform broadcasting.

  • XTENSOR_USE_XSIMD: enables simd acceleration in xtensor. This requires that you have xsimd installed on your system.

  • XTENSOR_USE_TBB: enables parallel assignment loop. This requires that you have you have tbb installed on your system.

  • XTENSOR_USE_OPENMP: enables parallel assignment loop using OpenMP. This requires that OpenMP is available on your system.

All these options are disabled by default. Enabling DOWNLOAD_GTEST or setting GTEST_SRC_DIR enables BUILD_TESTS.

If the BUILD_TESTS option is enabled, the following targets are available:

  • xtest: builds an run the test suite.

  • xbenchmark: builds and runs the benchmarks.

For instance, building the test suite of xtensor with assertions enabled:

mkdir build
cd build
cmake -DBUILD_TESTS=ON -DXTENSOR_ENABLE_ASSERT=ON ../
make xtest

Building the test suite of xtensor where the sources of gtest are located in e.g. /usr/share/gtest:

mkdir build
cd build
cmake -DGTEST_SRC_DIR=/usr/share/gtest ../
make xtest

Configuration

xtensor can be configured via macros, which must be defined before including any of its header. Here is a list of available macros:

  • XTENSOR_ENABLE_ASSERT: enables assertions in xtensor, such as bound check.

  • XTENSOR_ENABLE_CHECK_DIMENSION: enables the dimensions check in xtensor. Note that this option should not be turned on if you expect operator() to perform broadcasting.

  • XTENSOR_USE_XSIMD: enables SIMD acceleration in xtensor. This requires that you have xsimd installed on your system.

  • XTENSOR_USE_TBB: enables parallel assignment loop. This requires that you have you have tbb installed on your system.

  • XTENSOR_USE_OPENMP: enables parallel assignment loop using OpenMP. This requires that OpenMP is available on your system.

  • XTENSOR_DEFAULT_DATA_CONTAINER(T, A): defines the type used as the default data container for tensors and arrays. T is the value_type of the container and A its allocator_type.

  • XTENSOR_DEFAULT_SHAPE_CONTAINER(T, EA, SA): defines the type used as the default shape container for tensors and arrays. T is the value_type of the data container, EA its allocator_type, and SA is the allocator_type of the shape container.

  • XTENSOR_DEFAULT_LAYOUT: defines the default layout (row_major, column_major, dynamic) for tensors and arrays. We strongly discourage using this macro, which is provided for testing purpose. Prefer defining alias types on tensor and array containers instead.

  • XTENSOR_DEFAULT_TRAVERSAL: defines the default traversal order (row_major, column_major) for algorithms and iterators on tensors and arrays. We strongly discourage using this macro, which is provided for testing purpose.

Build the documentation

First install the tools required to build the documentation:

conda install breathe doxygen sphinx_rtd_theme -c conda-forge

You can then build the documentation:

cd docs
make html

Type make help to see the list of available documentation targets.