Skip to content

Requirements

These requirements apply when building GemPBA from source. If you install a pre-built package (APT, MSYS2, Homebrew) or pull the Java JAR, the runtime dependencies are resolved for you — see Installation.

Dependency Version Notes
C++ compiler C++23 GCC 13+, Clang 17+, AppleClang, MSVC 19.38+
CMake ≥ 3.28
hwloc any recent Hardware-topology probe used by telemetry (gated by GEMPBA_HWLOC, ON by default when gempba is the root project)
OpenMPI ≥ 4.0 Only for the multiprocessing (mpi) flavor
spdlog any recent Must be provided by the system since v3.1.0
fmt any recent Pulled in alongside spdlog
Boost any recent Optional — tests only (fetched automatically by CPM)
GoogleTest any recent Optional — running tests only (fetched automatically by CPM)
JDK + Maven JDK 25, Maven 3.9+ Only for the Java binding

GemPBA uses CPM.cmake to fetch some dependencies automatically. BS_thread_pool, Boost, and GoogleTest are among them — no action needed for those.


Installing dependencies

Ubuntu

sudo apt update
sudo apt install -y build-essential
sudo apt install -y cmake
sudo apt install -y libhwloc-dev
sudo apt install -y libopenmpi-dev   # multiprocessing flavor only
sudo apt install -y libspdlog-dev
sudo apt install -y libfmt-dev

If you plan to run the tests, also install Boost and GoogleTest:

sudo apt install -y libboost-all-dev
sudo apt install -y libgtest-dev
sudo apt install -y libgmock-dev

On Ubuntu, libgtest-dev ships the source only. You need to compile and install it before CMake can find it:

cd /usr/src/googletest
sudo cmake -S . -B build
sudo cmake --build build --target install

Windows (MSYS2 / MinGW64)

Open an MSYS2 MinGW64 shell and run:

pacman -Syu
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-hwloc
pacman -S mingw-w64-x86_64-msmpi    # multiprocessing flavor only
pacman -S mingw-w64-x86_64-spdlog
pacman -S mingw-w64-x86_64-fmt

If you plan to run the tests:

pacman -S mingw-w64-x86_64-boost
pacman -S mingw-w64-x86_64-gtest

macOS (Homebrew)

brew install cmake
brew install hwloc
brew install open-mpi   # multiprocessing flavor only
brew install spdlog
brew install fmt

If you plan to run the tests:

brew install boost
brew install googletest