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:
example:~$ tar -zxf regina-7.3.tar.gz
example:~$ cd regina-7.3
example:~/regina-7.3$ mkdir build
example:~/regina-7.3$ cd build
example:~/regina-7.3/build$ cmake ..
example:~/regina-7.3/build$ make
example:~/regina-7.3/build$ sudo make install
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 |
Component | Required For | Version | Package 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) |