Installation using CMake
Contents
Installation using CMake#
Reaktoro has several external software and library dependencies that need to be pre-installed for its successful compilation and installation using CMake. To greatly simplify the building process of Reaktoro for Linux, Windows, and macOS, you’ll need Conda.
Please follow the Conda installation steps before proceeding with the instructions below.
Attention
If you do not want to rely on Conda for facilitating the process of building
Reaktoro from source, you’ll need to manually install all dependencies listed
in the file environment.devenv.yml
.
Installing conda-devenv#
Reaktoro relies on conda-devenv, a tool
that conveniently allows us to manage different software dependencies across
Linux, Windows, and macOS operating systems using a single conda dependency
file environment.devenv.yml
instead of multiple environment.yml
files, one
for each system.
After installing conda
, go to a terminal and execute:
conda install -n base conda-devenv
to install conda-devenv in the base
conda environment.
Downloading Reaktoro from GitHub#
We need now to download the source code of Reaktoro, which is hosted on GitHub. This can be done by either executing the following git command from the terminal (ensure you already have git installed!):
git clone https://github.com/reaktoro/reaktoro.git
or by directly downloading reaktoro-main.zip, the latest version of Reaktoro’s source code in a zip file.
Caution
If you use the direct download option above, please unzip the downloaded file
in a directory of your choice. We assume the unzipped folder is named
reaktoro
for the next installation steps, and not reaktoro-main
! If you
are deloping Reaktoro, make sure you use git clone
instead.
Installing Reaktoro’s software dependencies#
Before building Reaktoro, we need to install all software dependencies needed during the build process. We do not want, however, all these dependencies polluting our system and possibly causing conflicts and/or corrupting existing software.
This is achieved by installing all Reaktoro’s dependencies in a dedicated conda environment.
In the root of the reaktoro directory, execute:
conda devenv
This command will install all dependencies listed in
environment.devenv.yml
in a conda environment named
reaktoro
. This step can take a few minutes to complete for the first time.
Attention
You only need to execute conda devenv
again when the list of external
dependencies changes or some configuration in the conda environment reaktoro
is altered.
Building and installing Reaktoro with CMake#
Before using cmake
to configure, build, and install Reaktoro, you need to
activate the conda environment reaktoro
that the conda devenv
command
from the previous section created for us:
conda activate reaktoro
Attention
You need to activate the conda environment reaktoro
whenever you use Reaktoro
from C++ or Python! This is because conda will adjust some environment
variables in your system (e.g., PYTHONPATH
, LD_LIBRARY_PATH
, PATH
) so
that Reaktoro’s libraries, executables, and Python packages can be found.
Activating the reaktoro
conda environment is the simplest way to get these
environment variables set correctly.
You can now configure the build of Reaktoro (using default options) by executing (assuming you are at the root of the reaktoro directory!):
cmake -S . -B build
Speed up linking time in Linux and macOS
The created conda environment reaktoro
on Linux and macOS should contain the LLVM linker lld
which has been shown to be significantly faster than the GNU linker ld
when linking Reaktoro’s C++ library, tests, examples and Python module.
To enable it, execute the following cmake configure command instead of the previous one:
cmake -S . -B build -DCMAKE_CXX_FLAGS="-fuse-ld=lld"
which specifies that Reaktoro will be built in the directory build
. The actual build operation happens when you execute the command:
cmake --build build --parallel
cmake --build build --config Release --parallel
Danger
In Linux and macOS, there is a risk of your system freezing with the command above because it will use all its computing cores and demand a lot of memory. If your system is not powerful enough and/or does not have plenty of memory, you should limit the number of parallel jobs. For example,
cmake --build build --parallel 3
will use only three parallel jobs.
Note for Windows users
In Windows, if you are using Microsoft Visual Studio, you’ll need to ensure a Release build because some library dependencies in Reaktoro do not interact well with Reaktoro built in Debug mode (e.g., yaml-cpp
).
This is not an issue for Linux and macOS systems.
Running Reaktoro’s tests#
Reaktoro contains hundreds of tests and thousands of assertions to ensure that everything has been implemented correctly. There are tests implemented in both C++ and Python languages.
To execute all C++ and Python tests, run:
cmake --build build --target tests
cmake --build build --config Release --target tests
You can also run the C++ and Python tests individually:
cmake --build build --target tests-cpp
cmake --build build --target tests-py
cmake --build build --config Release --target tests-cpp
cmake --build build --config Release --target tests-py
Note for Windows users
If you encounter strange issues in Windows when running the tests, and some C++ tests fail, there is a chance this is a result of an accidental Debug build in Windows instead of Release when using Microsoft Visual Studio. See previous section.
Building and running Reaktoro’s C++ examples#
Reaktoro contains many examples in C++ demonstrating its usage for various
applications. These examples live in the directory
examples/cpp
within the root directory of Reaktoro.
To build them, execute:
cmake --build build --target examples
Note for Windows users
If you are using Microsoft Visual Studio, the command above may not work and you’ll need to build the examples by opening the Visual Studio project generated by CMake in the build directory.
You can now run individual C++ examples by executing them:
build/examples/cpp/ex-equilibrium-fixed-ph
Running Reaktoro’s Python examples#
Reaktoro also contains many examples written in Python that can be found in the
directory
examples/python
within the root directory of Reaktoro’s source code.
Before we can execute them from the terminal, we need to set the PYTHONPATH
environment variable so that the reaktoro
Python package can be found. From
the root directory, execute:
source build/envs
build\envs4release.bat
This command should output a message indicating the new value of changed
environment variables, such as PYTHONPATH
and PATH
(in Windows) or
LD_LIBRARY_PATH
(in Linux and macOS).
We are now able to execute individual Reaktoro examples written in Python as follows (ensure you are in the root directory of Reaktoro’s source code!):
python examples/python/ex-beginner-equilibrium-phreeqc.py
python examples\python\ex-beginner-equilibrium-phreeqc.py
Installing Reaktoro after it has been built#
You may want to install Reaktoro in a directory of your choice after building
it with cmake
. You can do so by first specifying where to install:
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/home/username/wherever
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=C:\Users\Username\Wherever
and then executing the install
target:
cmake --build build --target install
cmake --build build --config Release --target install
This step will install Reaktoro’s C++ header files, libraries, executables,
and the Python package reaktoro
in the specified installation path.
Please help me installing Reaktoro!#
If you have problems with the instructions above and after investigating the
problem even more, you couldn’t find a solution (for example, it might just be a
common cmake
problem for which there is already a solution on the internet),
please contact us.