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 dimensions check 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.

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.
  • 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.
  • 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.
  • 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.