Install third-party software

As a prerequisite, Python and some Python modules must be installed. For the recommended installation under pyenv, see

Further required software:

  • Compiler with basic C++-20 support (gcc or clang)
  • cmake >= 3.20
  • gsl >= 1.15 (GNU scientific library)
  • fftw3 >= 3.3.1 (fast Fourier transform)
  • libtiff >= 4.0.2 (TIFF image loader)
  • libcerf >= 2.0 (complex error function) [1]
  • boost >= 1.65 [2]
  • Qt6

[1] The library libcerf happens to be maintained by our own group. Nonetheless it is treated as an external dependency because packages are provided by all major Linux distributions (see https://pkgs.org).

[2] From libboost, we need the library components iostreams and program_options. Internally, the CMake command to find boost::iostreams may add a dependence on boost::regex. Furthermore, we need a number of header-only components, including algorithm/string, bimap, geometry, numeric/interval, polymorphic_cast.

Recommended software:

  • For generating a man page:
    • perl
  • For Matplotlib usetex mode:
    • texlive-latex-extra (and dependencies)
    • dvipng
    • cm-super-minimal

All these can be easily installed on most Linux distributions using the system’s package manager. Below are a few examples for several selected operating systems. Note that other distributions (Fedora, Mint, etc) may have different commands for invoking the package manager and slightly different names of packages (like boost instead of libboost etc). Besides that, the installation should be very similar.

Debian / Ubuntu / …

Install required packages:

$ sudo apt-get install build-essential git cmake \
  libgsl-dev libfftw3-dev libtiff-dev \
  libboost-dev libboost-iostreams-dev \
  libboost-program-options-dev libboost-regex-dev \
  libcerf-dev qt6-base-dev qt6-svg-dev

If CMake fails with “Could NOT find OpenGL”, then install libgl1-mesa-dev. If it fails with “Could NOT find OpenGL (missing: EGL)”, then install libegl1-mesa-dev.

We assume that Python is installed under pyenv); otherwise we also need the packages

  python3 python3-dev python3-pip python3-numpy python3-matplotlib python3-lmfit

Note: Normally we should also depend on libcerf-dev, which however is presently outdated. Therefore Debian users should install libcerf from source, https://jugit.fz-juelich.de/mlz/libcerf.

OpenSuse

Install required packages:

$ sudo zypper install gcc-c++ git-core cmake gsl-devel \
  libboost_*-devel fftw3-devel libcerf-devel libtiff-devel \
  libqt6-qtbase-devel libqt6-qttools-devel libqt6-qtsvg-devel

We assume that Python is installed under pyenv); otherwise we also need the packages

  python3-devel python3-pip \
  python3-numpy-devel python3-matplotlib python3-lmfit \

MacOS

To install third-party dependencies on MacOS, we recommend using the package manager Homebrew:

brew install git cmake fftw gsl libcerf python boost libtiff qt6
pip3 install matplotlib numpy

By default, Homebrew installs packages to /opt/homebrew or /usr/local, depending on the architecture dependent MacOS version. Possibly, this path has to be passed to CMake using the argument -DCMAKE_PREFIX_PATH (see the build instructions).

Add Qt to your path environment variable:

export PATH=/usr/local/opt/qt6/bin/:$PATH