Installation FAQ
Here is a list of some frequently asked questions regarding the installation of Dune.
My System does not provide the required minimal compiler version. Where can I find updates?
This heavily depends on your system. For Debian/Ubuntu based Linux distributions, sources are:
- PPA for recent gcc/g++ compilers for various ubuntu distributions: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test
- APT repository for clang (debian and ubuntu packages): https://apt.llvm.org
Follow the instruction on the referenced pages.
How can I update my system CMake version?
Similar to the compilers, it depends on your distribution:
- APT repository from Kitware: https://apt.kitware.com
- Snap package: https://snapcraft.io/cmake (for RHEL, see https://snapcraft.io/install/cmake/rhel)
- Using PIP: python -m pip install cmake
- docker container including CMake: e.g. https://registry.dune-project.org/docker/ci/ubuntu:20.04 or https://registry.dune-project.org/docker/ci/debian:10
- Binary from Kitware website: https://cmake.org/download + add CMAKE="YOUR_PATH/bin/cmake"to your options file.
- Compile CMake from source: https://cmake.org/download, using your old CMake.
My dune packages are located in different directories. How can I find them using dunecontrol?
The dunecontrol script searches in the current directory and all its subdirectories for files name dune.module.
Those files contain the information about the corresponding dune module and its dependencies. Additionally,
dunecontrol searches in all directories (and subdirectories of those) listed in the variable
DUNE_CONTROL_PATH. Similarly to the PATH variable, directories are separated by colon :.
You can either prefix the call of dunecontrol to individually specify the search paths, i.e.,
DUNE_CONTROL_PATH=path/to/module1:/path/to/module2 dunecontrol [...] COMMAND
or you can put this path information into an options file, next to the other options like CMAKE_FLAGS or
MAKE_FLAGS.
How do I link to pybind11 when using embedded Python?
The Python bindings are based on the pybind11
library. Besides allowing to call C++ code from Python, pybind11 can also embed
Python code in your Dune C++ application.
Follow the pybind11 instructions
to see how this is done. However, you cannot link against pybind11::embed in CMake,
but you have to link to the Python library manually:
if(DUNE_ENABLE_PYTHONBINDINGS)
  add_executable("application" application.cc)
  target_link_dune_default_libraries("application")
  target_link_libraries("application" PRIVATE Python3::Python)
 endif()
Note that the Python bindings for Dune C++ types can also be used in an embedded Python context.
 | 
                                Legal Statements / Impressum  | 
                                Hosted by  TU Dresden & Uni Heidelberg  | 
		                
				  generated with Hugo v0.111.3
								(Oct 31, 23:32, 2025)
   | 
                                Legal Statements / Impressum  | 
                                Hosted by  TU Dresden & Uni Heidelberg  | 
		                
				  generated with Hugo v0.111.3
								(Oct 31, 23:32, 2025)