Building Regina from Source

Tip: See the page on building Regina on different systems, which offers advice tailored for your particular type of machine.

Regina's build scripts should detect most aspects of your system configuration, and give you useful error messages if something looks out of place. If Regina does not build out of the box for you, please mail the authors (including your CMakeCache.txt if possible) so that we can update the scripts to work with systems like yours in the next release.

In summary, to build Regina:

That's all there is to it. If you are having trouble building or running Regina, please check out the troubleshooting page and/or mail the authors for assistance.

System Requirements

The following table lists the tools and libraries that you will need to build Regina.

It is highly recommended that you download ready-made packages of these tools and libraries. This is the best way to provide standard installations in standard locations that Regina can easily find and use. All of these tools and libraries are included in almost every major GNU/Linux distribution.

The following table lists each requirement, along with its Debian package name and some commonly-used RPM package names (these tend to vary between different RPM-based distributions).

Legend
Required Optional

ComponentRequired For VersionPackage Names
C++ compiler Build infrastructure Must support C++17 g++ (DEB)
gcc-c++ (RPM)
CMake Build infrastructure ≥ 3.12 cmake (DEB)
cmake (RPM)
GNU multiprecision arithmetic library,
including libgmp and libgmpxx
Calculation engine   libgmp-dev (DEB)
gmp-devel (plus gmpxx-devel on some systems) (RPM)
GNOME XML library (libxml2) Calculation engine ≥ 2.5.0 libxml2-dev (DEB)
libxml2-devel (RPM)
Jansson JSON library (libjansson) Calculation engine   libjansson-dev (DEB)
jansson-devel / libjansson-devel (RPM)
A lightweight database library, chosen from:
– Tokyo Cabinet (libtokyocabinet); or
– QDBM (libqdbm); or
– Lightning Memory-Mapped Database (liblmdb)
Calculation engine   libtokyocabinet-dev / libqdbm-dev / liblmdb-dev (DEB)
tokyocabinet-devel / libtokyocabinet-devel /
qdbm-devel / lmdb-devel / liblmdb-devel (RPM)
Popt command-line parsing library (libpopt) Command-line utilities   libpopt-dev (DEB)
popt-devel (RPM)
Qt libraries, including the Widgets and Svg modules Graphical user interface 6.x or 5.x (≥ 5.4) qt6-base-dev & libqt6svg6-dev, or
qtbase5-dev & libqt5svg5-dev (DEB)
qt6-qtbase-devel & qt6-qtsvg-devel, or
qt6-base-devel & qt6-svg-devel, or
libqt5-qtbase-devel & libqt5-qtsvg-devel (RPM)
Python development libraries Python scripting ≥ 3.6 python3-all-dev (DEB)
python3-devel (RPM)
Doxygen C++/Python API docs ≥ 1.8.17 doxygen (DEB)
doxygen (RPM)
Graphviz libraries Drawing graphs libgraphviz-dev (DEB)
graphviz-devel / libgraphviz-devel (RPM)
pkg-config Build infrastructure
(locating Graphviz)
  pkg-config (DEB)
pkg-config / pkgconfig (RPM)
xsltproc User handbook   xsltproc (DEB)
libxslt / libxslt1 / xsltproc (RPM)
CppUnit Test suite ≥ 1.8.0 libcppunit-dev (DEB)
cppunit-devel / libcppunit-devel (RPM)

Back to main page ... Back to main page ...