aGrUM 3.2.0
a C++ library for (probabilistic) graphical models
Build System

aGrUM/pyAgrum are built with CMake, driven through a thin Python wrapper called act (acttools/).

Collaboration diagram for Build System:

aGrUM/pyAgrum are built with CMake, driven through a thin Python wrapper called act (acttools/).

This page lists the build flavors act can produce; for how modules map to shared/static binaries, see Code modularization (aGrUM and pyAgrum).

The act command

Canonical form: act <action> <mode> <target> [flags...]

  • action: lib, install, pipinstall, test, doc, wheel, nightly_wheel, package, guideline, clean, purge, show
  • mode: debug or release
  • target: aGrUM or pyAgrum (case-insensitive)

Examples: act lib release aGrUM, act test debug pyAgrum, act install release aGrUM --static_lib.

act --dry-run prints the resulting cmake invocation without running it – the fastest way to see exactly which flags a given combination of options produces.

Build flavors

FlavorCMake optionact flagNotes
Shared vs staticBUILD_SHARED_LIBS (default ON)--static_libaGrUM on Windows is always static (enforced by act); pyAgrum is always forced static regardless of this flag.
ThreadingGUM_THREADS=omp|stl (CMake default stl)-tt/--threads {omp,stl} (act default omp)pyAgrum always forces GUM_THREADS=stl.
Module selectionBUILD_ALL, BUILD_<MODULE>-m/--modules {show|all|mod1+mod2+...}Modules: BASE, BN, PRM, MRF, CN, FMDP, ID, CM, KTBN (see src/modules.txt). pyAgrum additionally toggles each SWIG-wrapped leaf module independently via PYAGRUM_WITH_<MODULE> (MRF, ID, CN, CM, PRM, KTBN, default ON each); FMDP has no Python binding.
Database supportUSE_NANODBC (default ON)--withSQL / --withoutSQLODBC connectivity via the vendored nanodbc library.
Python stable ABIAGRUM_PYTHON_SABI (default ON)--stable_abi_offMutually exclusive with the free-threaded build below.
Python free-threadingAGRUM_PYTHON_NOGIL (default OFF)--no_gilExperimental GIL-disabled pyAgrum build.
Compilern/a--compiler {gcc|clang|mvsc22|mvsc19|mvsc17|mvsc15|mingw64|...}Default gcc on Linux/macOS, mvsc22 on Windows; only the MSVC variants and mingw64 are allowed on Windows.

Platforms exercised by the build system: Linux, macOS and Windows, with GCC, Clang and MSVC/MinGW as the supported compiler families (see the top-level CLAUDE.md for the minimum supported versions).