diff --git a/.cmake-format.yaml b/.cmake-format.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b4985a9564356a15e0c9b564b0c1bdf888135ce3
--- /dev/null
+++ b/.cmake-format.yaml
@@ -0,0 +1,3 @@
+# E.g. run with: fd CMakeLists.txt Applications/ -x cmake-format -i -c .cmake-format.yaml {}
+tab_size: 4
+max_subargs_per_line: 4
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1437ab2a2f4c4b9af6a03302721ac23e83fed3f9..8e06df58a2975f5013d99ade951669a01273edac 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -32,5 +32,11 @@ repos:
         entry: scripts/hooks/pre-commit-git-lfs.sh
         language: system
         stages: [commit, manual]
+    -   id: cmake-format
+        name: Format CMake files
+        entry: scripts/hooks/pre-commit-cmake-format.sh
+        language: system
+        files: 'CMakeLists.txt'
+        stages: [commit, manual]
 
 exclude: 'ThirdParty/*|Tests/Data/*|web/static/images/xsd'
diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt
index 1987e809d218093d1645170621a3742bbd2e1b01..4d00c3f2ef84bef04c75dde5b0fdb71ba77e6ae6 100644
--- a/Applications/ApplicationsLib/CMakeLists.txt
+++ b/Applications/ApplicationsLib/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Source files
-GET_SOURCE_FILES(SOURCES_APPLICATIONSLIB)
+get_source_files(SOURCES_APPLICATIONSLIB)
 set(LIB_SOURCES ${SOURCES_APPLICATIONSLIB})
 
 # Library
@@ -9,16 +9,20 @@ if(BUILD_SHARED_LIBS)
 endif()
 
 target_link_libraries(ApplicationsLib
-    PUBLIC BaseLib GeoLib Processes logog
-    PRIVATE MathLib MeshLib MeshGeoToolsLib NumLib ParameterLib
-)
+                      PUBLIC BaseLib GeoLib Processes logog
+                      PRIVATE MathLib
+                              MeshLib
+                              MeshGeoToolsLib
+                              NumLib
+                              ParameterLib)
 
 # Set cpp definitions if the cmake option is enabled for the given process.
 foreach(process ${ProcessesList})
     if(OGS_BUILD_PROCESS_${process})
         string(TOUPPER "OGS_BUILD_PROCESS_${process}" EnableProcess)
-        set_property(SOURCE ProjectData.cpp APPEND PROPERTY COMPILE_DEFINITIONS
-            ${EnableProcess})
+        set_property(SOURCE ProjectData.cpp
+                     APPEND
+                     PROPERTY COMPILE_DEFINITIONS ${EnableProcess})
     endif()
 endforeach()
 
diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt
index 30a38e1caa074e27318fc3d8e578c0872e7e2521..bb8917b328854f4981be66e7c6687e880ac073bd 100644
--- a/Applications/CLI/CMakeLists.txt
+++ b/Applications/CLI/CMakeLists.txt
@@ -1,27 +1,27 @@
-
 add_executable(ogs ogs.cpp)
 
-target_link_libraries(ogs
-    PRIVATE BaseLib ApplicationsLib
-)
+target_link_libraries(ogs PRIVATE BaseLib ApplicationsLib)
 
 if(OGS_USE_PYTHON)
-    # Troubleshooting:
-    # If you get linker errors, such as   ogs.cpp:(.text+0xb4): undefined reference to `_Py_ZeroStruct'
-    # it could be that OGS is compiled with the wrong Python version.
-    # I (Ch. Leh.) observed the following: The symbol _Py_ZeroStruct could not be found in /usr/lib/libpython3.6m.so (I intended to compile OGS with Python3).
-    # It's apparently a Python2 symbol (present in /usr/lib/libpython2.7.so)
-    # The compiler command-line was the following:
+    # Troubleshooting: If you get linker errors, such as   ogs.cpp:(.text+0xb4):
+    # undefined reference to `_Py_ZeroStruct' it could be that OGS is compiled
+    # with the wrong Python version. I (Ch. Leh.) observed the following: The
+    # symbol _Py_ZeroStruct could not be found in /usr/lib/libpython3.6m.so (I
+    # intended to compile OGS with Python3). It's apparently a Python2 symbol
+    # (present in /usr/lib/libpython2.7.so) The compiler command-line was the
+    # following:
+    # ~~~
     # /usr/bin/g++ ... -DvtkRenderingVolume_AUTOINIT="1(vtkRenderingVolumeOpenGL2)" \
     #     -I/usr/include/vtk -I/usr/include/python2.7 -I/usr/include/freetype2 \
     #     -I/usr/include/libxml2 ... -I/.../BaseLib ... \
     #     -isystem /usr/include/python3.6m ... -o CMakeFiles/ogs.dir/ogs.cpp.o \
     #     -c /.../Applications/CLI/ogs.cpp
-    # In particular, the Python2 include path comes before the Python3 include path.
-    # Compiling OGS with Python2 solved the issue.
-    # I assume (this is only a guess!) that VTK pulls in Python2 dependencies (on my system).
-    # I assume that this is related to https://github.com/ufz/ogs/pull/2158.
-    # Workaround: Always make sure that OGS is compiled with the same Python version as VTK.
+    # ~~~
+    # In particular, the Python2 include path comes before the Python3 include
+    # path. Compiling OGS with Python2 solved the issue. I assume (this is only
+    # a guess!) that VTK pulls in Python2 dependencies (on my system). I assume
+    # that this is related to https://github.com/ufz/ogs/pull/2158. Workaround:
+    # Always make sure that OGS is compiled with the same Python version as VTK.
     # The error described above should be detected automatically by cmake and an
     # appropriate message should be presented. The note is kept for the case
     # that the automatic detection does not work due to whatever reason.
@@ -29,25 +29,29 @@ if(OGS_USE_PYTHON)
     add_library(ogs_embedded_python ogs_embedded_python.cpp)
 
     # Performance warning from
-    # https://github.com/pybind/pybind11/blob/master/docs/compiling.rst:
-    # Since pybind11 is a metatemplate library, it is crucial that certain compiler
-    # flags are provided to ensure high quality code generation. In contrast to the
-    # pybind11_add_module() command, the CMake interface library only provides the
-    # minimal set of parameters to ensure that the code using pybind11 compiles, but
-    # it does not pass these extra compiler flags (i.e. this is up to you).
-    # TODO: Enable further compiler/linker flags.
+    # https://github.com/pybind/pybind11/blob/master/docs/compiling.rst: Since
+    # pybind11 is a metatemplate library, it is crucial that certain compiler
+    # flags are provided to ensure high quality code generation. In contrast to
+    # the pybind11_add_module() command, the CMake interface library only
+    # provides the minimal set of parameters to ensure that the code using
+    # pybind11 compiles, but it does not pass these extra compiler flags (i.e.
+    # this is up to you). TODO: Enable further compiler/linker flags.
     target_link_libraries(ogs_embedded_python PUBLIC pybind11::embed)
     target_compile_definitions(ogs_embedded_python PUBLIC OGS_USE_PYTHON)
-    target_link_libraries(ogs_embedded_python PRIVATE
-        ProcessLibBoundaryConditionPythonModule ProcessLibSourceTermPythonModule)
+    target_link_libraries(ogs_embedded_python
+                          PRIVATE ProcessLibBoundaryConditionPythonModule
+                                  ProcessLibSourceTermPythonModule)
 
     target_link_libraries(ogs PRIVATE ogs_embedded_python)
 
     if(BUILD_SHARED_LIBS)
-        # Add macro definition, because static libs make special handling necessary
-        # s.t. the embedded OpenGeoSys Python module won't be removed by the linker.
-        target_compile_definitions(ogs_embedded_python PRIVATE OGS_BUILD_SHARED_LIBS)
-        install(TARGETS ogs_embedded_python LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+        # Add macro definition, because static libs make special handling
+        # necessary s.t. the embedded OpenGeoSys Python module won't be removed
+        # by the linker.
+        target_compile_definitions(ogs_embedded_python PRIVATE
+                                   OGS_BUILD_SHARED_LIBS)
+        install(TARGETS ogs_embedded_python
+                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
     endif()
 endif()
@@ -64,20 +68,19 @@ if(OGS_USE_PCH)
     cotire(ogs)
 endif()
 
-####################
-### Tests ##########
-####################
+# ---- Tests ----
 add_test(NAME ogs_no_args COMMAND ogs)
 set_tests_properties(ogs_no_args PROPERTIES WILL_FAIL TRUE)
 
-####################
-### Installation ###
-####################
+# ---- Installation ----
 install(TARGETS ogs RUNTIME DESTINATION bin COMPONENT ogs_cli)
 
-set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ogs" "OGS Simulator")
+set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} "ogs"
+                              "OGS Simulator")
 cpack_add_component(ogs_cli
-    DISPLAY_NAME "OGS THMC Simulator"
-    DESCRIPTION "The command line interface for OpenGeoSys."
-    GROUP Applications
-)
+                    DISPLAY_NAME
+                    "OGS THMC Simulator"
+                    DESCRIPTION
+                    "The command line interface for OpenGeoSys."
+                    GROUP
+                    Applications)
diff --git a/Applications/DataExplorer/Base/CMakeLists.txt b/Applications/DataExplorer/Base/CMakeLists.txt
index c8f22d0819c0a77663f77b56af00838b12315691..112e81c89b668f324f94449399f8aa5703c955b6 100644
--- a/Applications/DataExplorer/Base/CMakeLists.txt
+++ b/Applications/DataExplorer/Base/CMakeLists.txt
@@ -8,8 +8,7 @@ set(SOURCES
     ColorPickerPushButton.cpp
     TreeModelIterator.cpp
     CheckboxDelegate.cpp
-    QValueTooltipSlider.cpp
-)
+    QValueTooltipSlider.cpp)
 
 # Header files
 set(HEADERS
@@ -23,18 +22,14 @@ set(HEADERS
     TreeModel.h
     ColorPickerPushButton.h
     CheckboxDelegate.h
-    QValueTooltipSlider.h
-)
+    QValueTooltipSlider.h)
 
 # Put moc files in a project folder
 source_group("UI Files" REGULAR_EXPRESSION "\\w*\\.ui")
 source_group("Moc Files" REGULAR_EXPRESSION "moc_.*")
 
 # Create the library
-add_library(QtBase
-    ${SOURCES}
-    ${HEADERS}
-)
+add_library(QtBase ${SOURCES} ${HEADERS})
 if(BUILD_SHARED_LIBS)
     install(TARGETS QtBase LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
diff --git a/Applications/DataExplorer/CMakeLists.txt b/Applications/DataExplorer/CMakeLists.txt
index 005036f32b19a6a7cdf8710928cab730348f2b30..2e991908d77c4314989549733d450f1b67e25c80 100644
--- a/Applications/DataExplorer/CMakeLists.txt
+++ b/Applications/DataExplorer/CMakeLists.txt
@@ -1,6 +1,6 @@
 set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
-# Always built Data Explorer statically as there are cyclic dependencies
-# between QtDataView and VtkVis
+# Always built Data Explorer statically as there are cyclic dependencies between
+# QtDataView and VtkVis
 set(BUILD_SHARED_LIBS OFF)
 
 if(MSVC)
@@ -11,9 +11,7 @@ if(VTKFBXCONVERTER_FOUND)
     add_definitions(-DVTKFBXCONVERTER_FOUND)
 endif()
 
-include_directories(
-    ${CMAKE_CURRENT_SOURCE_DIR}
-)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 
 set(CMAKE_AUTOMOC TRUE)
 set(CMAKE_AUTOUIC TRUE)
diff --git a/Applications/DataExplorer/DataExplorer.cmake b/Applications/DataExplorer/DataExplorer.cmake
index 6efad20625266232328e6c95b166d68d4da33704..96264714217423008a442035851022a9300720e0 100644
--- a/Applications/DataExplorer/DataExplorer.cmake
+++ b/Applications/DataExplorer/DataExplorer.cmake
@@ -91,9 +91,7 @@ if(OGS_USE_PCH)
     cotire(DataExplorer)
 endif()
 
-####################
-### Installation ###
-####################
+# ---- Installation ----
 install(TARGETS DataExplorer RUNTIME DESTINATION bin COMPONENT ogs_gui)
 
 cpack_add_component(ogs_gui
diff --git a/Applications/DataExplorer/DataView/CMakeLists.txt b/Applications/DataExplorer/DataView/CMakeLists.txt
index 06a747961a4d290337850468920ddb2ff50e2dbb..216248285f4f03636ffcfbc68afedbeda4d6dda3 100644
--- a/Applications/DataExplorer/DataView/CMakeLists.txt
+++ b/Applications/DataExplorer/DataView/CMakeLists.txt
@@ -41,8 +41,7 @@ set(SOURCES
     StationTabWidget.cpp
     StationTreeModel.cpp
     StationTreeView.cpp
-    SurfaceExtractionDialog.cpp
-)
+    SurfaceExtractionDialog.cpp)
 
 set(HEADERS
     AddLayerToMeshDialog.h
@@ -92,56 +91,60 @@ set(HEADERS
     StationTabWidget.h
     StationTreeModel.h
     StationTreeView.h
-    SurfaceExtractionDialog.h
-)
+    SurfaceExtractionDialog.h)
 
 # Visual Studio folder
 source_group("Dialog Header Files" REGULAR_EXPRESSION "[.]*Dialog.h")
 source_group("Dialog Source Files" REGULAR_EXPRESSION "[.]*Dialog.cpp")
-source_group("Data Model Header Files" REGULAR_EXPRESSION "[.]*Item.h|[.]*Model.h|[.]*View.h")
-source_group("Data Model Source Files" REGULAR_EXPRESSION "[.]*Item.cpp|[.]*Model.cpp|[.]*View.cpp")
+source_group("Data Model Header Files" REGULAR_EXPRESSION
+             "[.]*Item.h|[.]*Model.h|[.]*View.h")
+source_group("Data Model Source Files" REGULAR_EXPRESSION
+             "[.]*Item.cpp|[.]*Model.cpp|[.]*View.cpp")
 file(GLOB UIS CONFIGURE_DEPENDS *.ui)
 source_group("UI Files" FILES ${UIS})
 
 set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
 set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/..)
-include_directories(
-    ${SOURCE_DIR_REL}/Applications/FileIO
-    ${SOURCE_DIR_REL}/BaseLib
-    ${SOURCE_DIR_REL}/MathLib
-    ${SOURCE_DIR_REL}/GeoLib
-    ${SOURCE_DIR_REL}/MeshGeoToolsLib
-    ${SOURCE_DIR_REL}/MeshLib
-    ${GUI_SOURCE_DIR_REL}/Base
-    ${GUI_SOURCE_DIR_REL}/VtkVis
-
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/DiagramView
-    ${CMAKE_CURRENT_SOURCE_DIR}/StratView
-)
+include_directories(${SOURCE_DIR_REL}/Applications/FileIO
+                    ${SOURCE_DIR_REL}/BaseLib
+                    ${SOURCE_DIR_REL}/MathLib
+                    ${SOURCE_DIR_REL}/GeoLib
+                    ${SOURCE_DIR_REL}/MeshGeoToolsLib
+                    ${SOURCE_DIR_REL}/MeshLib
+                    ${GUI_SOURCE_DIR_REL}/Base
+                    ${GUI_SOURCE_DIR_REL}/VtkVis
+                    ${CMAKE_CURRENT_SOURCE_DIR}
+                    ${CMAKE_CURRENT_SOURCE_DIR}/DiagramView
+                    ${CMAKE_CURRENT_SOURCE_DIR}/StratView)
 
 if(GEOTIFF_FOUND)
     include_directories(${GEOTIFF_INCLUDE_DIRS})
 endif() # GEOTIFF_FOUND
 
-add_library(QtDataView
-    ${SOURCES}
-    ${HEADERS}
-    ${UIS}
-)
+add_library(QtDataView ${SOURCES} ${HEADERS} ${UIS})
 if(BUILD_SHARED_LIBS)
     install(TARGETS QtDataView LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(QtDataView
-    PUBLIC GeoLib MeshGeoToolsLib MeshLib QtBase VtkVis
-    PRIVATE BaseLib MathLib ApplicationsFileIO QtDiagramView QtStratView
-        DataHolderLib logog Qt5::Core Qt5::Gui
-)
+                      PUBLIC GeoLib
+                             MeshGeoToolsLib
+                             MeshLib
+                             QtBase
+                             VtkVis
+                      PRIVATE BaseLib
+                              MathLib
+                              ApplicationsFileIO
+                              QtDiagramView
+                              QtStratView
+                              DataHolderLib
+                              logog
+                              Qt5::Core
+                              Qt5::Gui)
 
 if(GEOTIFF_FOUND)
     target_link_libraries(QtDataView PRIVATE ${GEOTIFF_LIBRARIES})
-endif () # GEOTIFF_FOUND
+endif() # GEOTIFF_FOUND
 
 add_autogen_include(QtDataView)
 
diff --git a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt
index c9503d12f2eff72481b0304c3c42b6ce462c53de..3da36416dcf351c121f4172cc3a70059d447dc05 100644
--- a/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt
+++ b/Applications/DataExplorer/DataView/DiagramView/CMakeLists.txt
@@ -5,8 +5,7 @@ set(SOURCES
     DiagramScene.cpp
     DiagramView.cpp
     QArrow.cpp
-    QGraphicsGrid.cpp
-)
+    QGraphicsGrid.cpp)
 
 set(HEADERS
     DiagramList.h
@@ -16,35 +15,32 @@ set(HEADERS
     DiagramScene.h
     DetailWindow.h
     DiagramPrefsDialog.h
-    DiagramView.h
-)
+    DiagramView.h)
 
 set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
 set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../..)
-include_directories(
-    ${SOURCE_DIR_REL}/BaseLib
-    ${SOURCE_DIR_REL}/GeoLib
-    ${SOURCE_DIR_REL}/MathLib
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${GUI_SOURCE_DIR_REL}/Base
-    ${GUI_SOURCE_DIR_REL}/DataView
-)
+include_directories(${SOURCE_DIR_REL}/BaseLib
+                    ${SOURCE_DIR_REL}/GeoLib
+                    ${SOURCE_DIR_REL}/MathLib
+                    ${CMAKE_CURRENT_SOURCE_DIR}
+                    ${GUI_SOURCE_DIR_REL}/Base
+                    ${GUI_SOURCE_DIR_REL}/DataView)
 
 file(GLOB_RECURSE UIS CONFIGURE_DEPENDS *.ui)
 source_group("UI Files" FILES ${UIS})
 
-add_library(QtDiagramView
-    ${SOURCES}
-    ${HEADERS}
-    ${UIS}
-)
+add_library(QtDiagramView ${SOURCES} ${HEADERS} ${UIS})
 if(BUILD_SHARED_LIBS)
     install(TARGETS QtDiagramView LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(QtDiagramView
-    PRIVATE BaseLib GeoLib QtBase DataHolderLib Qt5::Gui logog
-)
+                      PRIVATE BaseLib
+                              GeoLib
+                              QtBase
+                              DataHolderLib
+                              Qt5::Gui
+                              logog)
 
 add_autogen_include(QtDiagramView)
 
diff --git a/Applications/DataExplorer/DataView/StratView/CMakeLists.txt b/Applications/DataExplorer/DataView/StratView/CMakeLists.txt
index b17d9286bc78316d7f54fa194a01ee11abc13f24..e88986209cab8d87195b0f9fb13ff5152d38490b 100644
--- a/Applications/DataExplorer/DataView/StratView/CMakeLists.txt
+++ b/Applications/DataExplorer/DataView/StratView/CMakeLists.txt
@@ -1,42 +1,29 @@
-set(SOURCES
-    StratBar.cpp
-    StratScene.cpp
-    StratView.cpp
-    StratWindow.cpp
-)
+set(SOURCES StratBar.cpp StratScene.cpp StratView.cpp StratWindow.cpp)
 
-set(HEADERS
-    StratBar.h
-    StratScene.h
-    StratView.h
-    StratWindow.h
-)
+set(HEADERS StratBar.h StratScene.h StratView.h StratWindow.h)
 
 set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../../..)
 set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../..)
-include_directories(
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${SOURCE_DIR_REL}/BaseLib
-    ${SOURCE_DIR_REL}/GeoLib
-    ${SOURCE_DIR_REL}/MathLib
-    ${GUI_SOURCE_DIR_REL}/Base
-)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}
+                    ${SOURCE_DIR_REL}/BaseLib
+                    ${SOURCE_DIR_REL}/GeoLib
+                    ${SOURCE_DIR_REL}/MathLib
+                    ${GUI_SOURCE_DIR_REL}/Base)
 
 file(GLOB_RECURSE UI_FILES CONFIGURE_DEPENDS *.ui)
 source_group("UI Files" FILES ${UI_FILES})
 
-add_library(QtStratView
-    ${SOURCES}
-    ${HEADERS}
-    ${UIS}
-)
+add_library(QtStratView ${SOURCES} ${HEADERS} ${UIS})
 if(BUILD_SHARED_LIBS)
     install(TARGETS QtStratView LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(QtStratView
-    PRIVATE BaseLib GeoLib DataHolderLib QtBase Qt5::Gui
-)
+                      PRIVATE BaseLib
+                              GeoLib
+                              DataHolderLib
+                              QtBase
+                              Qt5::Gui)
 add_autogen_include(QtStratView)
 
 set_property(TARGET QtStratView PROPERTY FOLDER "DataExplorer")
diff --git a/Applications/DataExplorer/NetCdfDialog/CMakeLists.txt b/Applications/DataExplorer/NetCdfDialog/CMakeLists.txt
index 0d74f1e40cb7605e0c69f16a2a161b3216e1a197..68c16fb9c323457236c350ec484c3d112dc96cab 100644
--- a/Applications/DataExplorer/NetCdfDialog/CMakeLists.txt
+++ b/Applications/DataExplorer/NetCdfDialog/CMakeLists.txt
@@ -1,14 +1,18 @@
 add_library(NetCdfDialogLib NetCdfConfigureDialog.cpp NetCdfConfigureDialog.h)
 if(BUILD_SHARED_LIBS)
-    install(TARGETS NetCdfConfigureDialog LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS NetCdfConfigureDialog
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(NetCdfDialogLib PUBLIC Qt5::Widgets PRIVATE MathLib vtknetcdfcpp)
+target_link_libraries(NetCdfDialogLib
+                      PUBLIC Qt5::Widgets
+                      PRIVATE MathLib vtknetcdfcpp)
 set_property(TARGET NetCdfDialogLib PROPERTY FOLDER "DataExplorer")
 
 # Workaround for system installed VTK (tested on arch)
 if(NOT OGS_USE_CONAN)
-    target_include_directories(NetCdfDialogLib SYSTEM
+    target_include_directories(
+        NetCdfDialogLib SYSTEM
         PUBLIC ${VTK_INSTALL_PREFIX}/include/vtk/vtknetcdfcpp)
 endif()
 
-add_autogen_include(NetCdfDialogLib)
\ No newline at end of file
+add_autogen_include(NetCdfDialogLib)
diff --git a/Applications/DataExplorer/VtkVis/CMakeLists.txt b/Applications/DataExplorer/VtkVis/CMakeLists.txt
index d8bb0b9b8e3de392162bbfeac18644fe2fcbd93f..cb0841b1950dcbd653da029903ce3641afb1e2df 100644
--- a/Applications/DataExplorer/VtkVis/CMakeLists.txt
+++ b/Applications/DataExplorer/VtkVis/CMakeLists.txt
@@ -46,8 +46,7 @@ set(SOURCES
     VtkVisPipelineItem.cpp
     VtkVisPipelineView.cpp
     VtkVisPointSetItem.cpp
-    VtkVisTabWidget.cpp
-)
+    VtkVisTabWidget.cpp)
 
 set(HEADERS
     MeshFromRasterDialog.h
@@ -97,8 +96,7 @@ set(HEADERS
     VtkVisPipelineItem.h
     VtkVisPipelineView.h
     VtkVisPointSetItem.h
-    VtkVisTabWidget.h
-)
+    VtkVisTabWidget.h)
 
 # Visual Studio folder
 source_group("Filter Header Files" REGULAR_EXPRESSION "[.]*Filter.h")
@@ -110,24 +108,18 @@ source_group("UI Files" FILES ${UIS})
 
 set(SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/../../..)
 set(GUI_SOURCE_DIR_REL ${CMAKE_CURRENT_SOURCE_DIR}/..)
-include_directories(
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_BINARY_DIR}
-    ${SOURCE_DIR_REL}/Applications/FileIO
-    ${SOURCE_DIR_REL}/BaseLib
-    ${SOURCE_DIR_REL}/GeoLib
-    ${SOURCE_DIR_REL}/MathLib
-    ${SOURCE_DIR_REL}/MeshLib
-    ${GUI_SOURCE_DIR_REL}/Base
-    ${GUI_SOURCE_DIR_REL}/DataView
-    ${GUI_SOURCE_DIR_REL}/VtkModules/Qt
-)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}
+                    ${CMAKE_CURRENT_BINARY_DIR}
+                    ${SOURCE_DIR_REL}/Applications/FileIO
+                    ${SOURCE_DIR_REL}/BaseLib
+                    ${SOURCE_DIR_REL}/GeoLib
+                    ${SOURCE_DIR_REL}/MathLib
+                    ${SOURCE_DIR_REL}/MeshLib
+                    ${GUI_SOURCE_DIR_REL}/Base
+                    ${GUI_SOURCE_DIR_REL}/DataView
+                    ${GUI_SOURCE_DIR_REL}/VtkModules/Qt)
 
-add_library(VtkVis
-    ${SOURCES}
-    ${HEADERS}
-    ${UIS}
-)
+add_library(VtkVis ${SOURCES} ${HEADERS} ${UIS})
 if(BUILD_SHARED_LIBS)
     install(TARGETS VtkVis LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
@@ -138,11 +130,15 @@ if(GEOTIFF_FOUND)
 endif() # GEOTIFF_FOUND
 
 target_link_libraries(VtkVis
-    PUBLIC BaseLib GeoLib MeshLib DataHolderLib QtBase vtkIOImage
-    PRIVATE MathLib ApplicationsFileIO Qt5::Gui logog
-)
+                      PUBLIC BaseLib
+                             GeoLib
+                             MeshLib
+                             DataHolderLib
+                             QtBase
+                             vtkIOImage
+                      PRIVATE MathLib ApplicationsFileIO Qt5::Gui logog)
 
-if (OGS_USE_NETCDF)
+if(OGS_USE_NETCDF)
     target_link_libraries(VtkVis PRIVATE NetCdfDialogLib)
 endif()
 
diff --git a/Applications/DataHolderLib/CMakeLists.txt b/Applications/DataHolderLib/CMakeLists.txt
index 7f23991438fc1a3a044092b23a3e2e4236e3907e..40e7e38bd433a935a2063b0e0f12f04e5aafc2da 100644
--- a/Applications/DataHolderLib/CMakeLists.txt
+++ b/Applications/DataHolderLib/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Source files
-GET_SOURCE_FILES(SOURCES_DataHolderLib)
+get_source_files(SOURCES_DataHolderLib)
 
 # Library
 add_library(DataHolderLib ${SOURCES_DataHolderLib})
@@ -7,10 +7,7 @@ if(BUILD_SHARED_LIBS)
     install(TARGETS DataHolderLib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-target_link_libraries(DataHolderLib
-    PUBLIC GeoLib MeshLib
-    PRIVATE BaseLib logog
-)
+target_link_libraries(DataHolderLib PUBLIC GeoLib MeshLib PRIVATE BaseLib logog)
 
 if(OGS_USE_PCH)
     cotire(DataHolderLib)
diff --git a/Applications/FileIO/CMakeLists.txt b/Applications/FileIO/CMakeLists.txt
index eaaed88a542e0d7c55ec7e10c2c56e1d73976690..95d05766e9410b1dae48fb7485cbd5d95682c94a 100644
--- a/Applications/FileIO/CMakeLists.txt
+++ b/Applications/FileIO/CMakeLists.txt
@@ -1,23 +1,23 @@
-GET_SOURCE_FILES(SOURCES)
-APPEND_SOURCE_FILES(SOURCES Gmsh)
-APPEND_SOURCE_FILES(SOURCES Legacy)
+get_source_files(SOURCES)
+append_source_files(SOURCES Gmsh)
+append_source_files(SOURCES Legacy)
 
 if(NOT Shapelib_FOUND)
     list(REMOVE_ITEM SOURCES SHPInterface.h SHPInterface.cpp)
 endif()
 
 # GO2OGS
-GET_SOURCE_FILES(SOURCES_GO2OGS GocadIO)
+get_source_files(SOURCES_GO2OGS GocadIO)
 set(SOURCES ${SOURCES} ${SOURCES_GO2OGS})
 
 if(OGS_BUILD_GUI)
-    APPEND_SOURCE_FILES(SOURCES XmlIO/Qt)
-    APPEND_SOURCE_FILES(SOURCES FEFLOW)
+    append_source_files(SOURCES XmlIO/Qt)
+    append_source_files(SOURCES FEFLOW)
 endif()
 
 if(OGS_BUILD_SWMM)
-    GET_SOURCE_FILES(SOURCES_SWMM SWMM)
-    SET(SOURCES ${SOURCES} ${SOURCES_SWMM})
+    get_source_files(SOURCES_SWMM SWMM)
+    set(SOURCES ${SOURCES} ${SOURCES_SWMM})
 endif()
 
 include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake)
@@ -25,12 +25,16 @@ include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake)
 # Create the library
 add_library(ApplicationsFileIO ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS ApplicationsFileIO LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS ApplicationsFileIO
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(ApplicationsFileIO
-    PUBLIC BaseLib DataHolderLib GeoLib MathLib logog
-    PRIVATE MeshLib
-)
+                      PUBLIC BaseLib
+                             DataHolderLib
+                             GeoLib
+                             MathLib
+                             logog
+                      PRIVATE MeshLib)
 
 if(OGS_BUILD_GUI)
     # Needed for the XmlPrjInterface, which links the DE/Base/OGSError.h.
@@ -49,13 +53,13 @@ if(OGS_USE_PCH)
     cotire(ApplicationsFileIO)
 endif()
 
-
-configure_file(XmlIO/OpenGeoSysCND.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysCND.xsd COPYONLY)
-configure_file(XmlIO/OpenGeoSysNum.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysNum.xsd COPYONLY)
-configure_file(XmlIO/OpenGeoSysProject.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysProject.xsd COPYONLY)
-install(FILES
-    XmlIO/OpenGeoSysCND.xsd
-    XmlIO/OpenGeoSysNum.xsd
-    XmlIO/OpenGeoSysProject.xsd
-    DESTINATION bin COMPONENT ogs_cli
-)
+configure_file(XmlIO/OpenGeoSysCND.xsd
+               ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysCND.xsd COPYONLY)
+configure_file(XmlIO/OpenGeoSysNum.xsd
+               ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysNum.xsd COPYONLY)
+configure_file(XmlIO/OpenGeoSysProject.xsd
+               ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysProject.xsd COPYONLY)
+install(FILES XmlIO/OpenGeoSysCND.xsd XmlIO/OpenGeoSysNum.xsd
+              XmlIO/OpenGeoSysProject.xsd
+        DESTINATION bin
+        COMPONENT ogs_cli)
diff --git a/Applications/FileIO/GocadIO/CMakeLists.txt b/Applications/FileIO/GocadIO/CMakeLists.txt
index 7ca90dceddc1db1c45a524b9f51cf6db2fc3ea36..a5d9d3df2e5ab3244a727ad11138e441c49f6ecb 100644
--- a/Applications/FileIO/GocadIO/CMakeLists.txt
+++ b/Applications/FileIO/GocadIO/CMakeLists.txt
@@ -1,6 +1,2 @@
-include_directories(
-    ${CMAKE_SOURCE_DIR}/BaseLib
-    ${CMAKE_SOURCE_DIR}/FileIO
-    ${CMAKE_SOURCE_DIR}/GeoLib
-    ${CMAKE_SOURCE_DIR}/MeshLib
-)
+include_directories(${CMAKE_SOURCE_DIR}/BaseLib ${CMAKE_SOURCE_DIR}/FileIO
+                    ${CMAKE_SOURCE_DIR}/GeoLib ${CMAKE_SOURCE_DIR}/MeshLib)
diff --git a/Applications/InSituLib/CMakeLists.txt b/Applications/InSituLib/CMakeLists.txt
index 486ef6cba61fbcf5841079612d1b91378f172cc5..3103fa1a1c2c9d4cdddae6942d5465679e761e6e 100644
--- a/Applications/InSituLib/CMakeLists.txt
+++ b/Applications/InSituLib/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Source files
-GET_SOURCE_FILES(SOURCES)
+get_source_files(SOURCES)
 
 # Library
 add_library(InSituLib ${SOURCES})
diff --git a/Applications/Utils/FileConverter/CMakeLists.txt b/Applications/Utils/FileConverter/CMakeLists.txt
index d280d8c55580d43be7c9d3ae8ddb6da8006e8ede..aac2917cb5cc906a184240f4c146e9627001b4b3 100644
--- a/Applications/Utils/FileConverter/CMakeLists.txt
+++ b/Applications/Utils/FileConverter/CMakeLists.txt
@@ -1,23 +1,23 @@
-if (OGS_BUILD_GUI)
-    if (Shapelib_FOUND)
+if(OGS_BUILD_GUI)
+    if(Shapelib_FOUND)
         add_executable(ConvertSHPToGLI ConvertSHPToGLI.cpp)
         set_target_properties(ConvertSHPToGLI PROPERTIES FOLDER Utilities)
-        target_link_libraries(ConvertSHPToGLI GeoLib Qt5::Xml ${Shapelib_LIBRARIES})
+        target_link_libraries(ConvertSHPToGLI GeoLib Qt5::Xml
+                              ${Shapelib_LIBRARIES})
     endif()
 
     add_executable(FEFLOW2OGS FEFLOW2OGS.cpp)
     set_target_properties(FEFLOW2OGS PROPERTIES FOLDER Utilities)
     target_link_libraries(FEFLOW2OGS ApplicationsFileIO)
-endif ()
+endif()
 
 add_executable(convertGEO convertGEO.cpp)
 set_target_properties(convertGEO PROPERTIES FOLDER Utilities)
 target_link_libraries(convertGEO GeoLib ApplicationsFileIO)
 
-add_executable(generateMatPropsFromMatID generateMatPropsFromMatID.cpp )
+add_executable(generateMatPropsFromMatID generateMatPropsFromMatID.cpp)
 target_link_libraries(generateMatPropsFromMatID MeshLib)
-set_target_properties(generateMatPropsFromMatID
-    PROPERTIES FOLDER Utilities)
+set_target_properties(generateMatPropsFromMatID PROPERTIES FOLDER Utilities)
 
 add_executable(GMSH2OGS GMSH2OGS.cpp)
 set_target_properties(GMSH2OGS PROPERTIES FOLDER Utilities)
@@ -46,50 +46,44 @@ target_link_libraries(TecPlotTools GeoLib MeshLib)
 add_executable(GocadSGridReader GocadSGridReaderMain.cpp)
 set_target_properties(GocadSGridReader PROPERTIES FOLDER Utilities)
 target_link_libraries(GocadSGridReader
-    GeoLib
-    MeshLib
-    ApplicationsFileIO
-    ${Boost_LIBRARIES}
-)
+                      GeoLib
+                      MeshLib
+                      ApplicationsFileIO
+                      ${Boost_LIBRARIES})
 
 add_executable(GocadTSurfaceReader GocadTSurfaceReader.cpp)
 set_target_properties(GocadTSurfaceReader PROPERTIES FOLDER Utilities)
-target_link_libraries(GocadTSurfaceReader
-    MeshLib
-    ApplicationsFileIO
-    ${Boost_LIBRARIES}
-)
+target_link_libraries(GocadTSurfaceReader MeshLib ApplicationsFileIO
+                      ${Boost_LIBRARIES})
 
 add_executable(Mesh2Raster MeshToRaster.cpp)
 set_target_properties(Mesh2Raster PROPERTIES FOLDER Utilities)
 target_link_libraries(Mesh2Raster MeshLib)
 
-
-####################
-### Installation ###
-####################
-install(TARGETS
-    generateMatPropsFromMatID
-    GMSH2OGS
-    OGS2VTK
-    VTK2OGS
-    VTK2TIN
-    TecPlotTools
-    GocadSGridReader
-    Mesh2Raster
-    RUNTIME DESTINATION bin COMPONENT ogs_converter)
+# ---- Installation ----
+install(TARGETS generateMatPropsFromMatID
+                GMSH2OGS
+                OGS2VTK
+                VTK2OGS
+                VTK2TIN
+                TecPlotTools
+                GocadSGridReader
+                Mesh2Raster
+        RUNTIME DESTINATION bin COMPONENT ogs_converter)
 
 if(OGS_BUILD_GUI)
     if(Shapelib_FOUND)
         install(TARGETS ConvertSHPToGLI
-            RUNTIME DESTINATION bin COMPONENT ogs_converter)
+                RUNTIME DESTINATION bin COMPONENT ogs_converter)
     endif()
-    install(TARGETS  FEFLOW2OGS convertGEO
-        RUNTIME DESTINATION bin COMPONENT ogs_converter)
+    install(TARGETS FEFLOW2OGS convertGEO
+            RUNTIME DESTINATION bin COMPONENT ogs_converter)
 endif()
 
 cpack_add_component(ogs_converter
-    DISPLAY_NAME "File converter"
-    DESCRIPTION "File converter."
-    GROUP Utilities
-)
+                    DISPLAY_NAME
+                    "File converter"
+                    DESCRIPTION
+                    "File converter."
+                    GROUP
+                    Utilities)
diff --git a/Applications/Utils/GeoTools/CMakeLists.txt b/Applications/Utils/GeoTools/CMakeLists.txt
index e65cb74e20e3a86c5c20d2cbf6aa875d3cc26e40..a721629a0e49f0cc8bd63e97cf8b7607aeea25fa 100644
--- a/Applications/Utils/GeoTools/CMakeLists.txt
+++ b/Applications/Utils/GeoTools/CMakeLists.txt
@@ -2,10 +2,7 @@ if(NOT OGS_BUILD_GUI)
     return()
 endif()
 
-set(TOOLS
-    MoveGeometry
-    TriangulatePolyline
-)
+set(TOOLS MoveGeometry TriangulatePolyline)
 foreach(TOOL ${TOOLS})
     add_executable(${TOOL} ${TOOL}.cpp)
     target_link_libraries(${TOOL} GeoLib ApplicationsFileIO Qt5::Core)
diff --git a/Applications/Utils/MeshEdit/CMakeLists.txt b/Applications/Utils/MeshEdit/CMakeLists.txt
index 680fe9173ffcf074807da5f5a1546cab1098a279..780ee023752e53f9f5d4e3bac0efd0c52e1fed2c 100644
--- a/Applications/Utils/MeshEdit/CMakeLists.txt
+++ b/Applications/Utils/MeshEdit/CMakeLists.txt
@@ -17,8 +17,7 @@ set(TOOLS
     ResetPropertiesInPolygonalRegion
     reviseMesh
     swapNodeCoordinateAxes
-    UnityPreprocessing
-)
+    UnityPreprocessing)
 foreach(TOOL ${TOOLS})
     add_executable(${TOOL} ${TOOL}.cpp)
     target_link_libraries(${TOOL} MeshLib)
@@ -26,8 +25,10 @@ endforeach()
 set_target_properties(${TOOLS} PROPERTIES FOLDER Utilities)
 install(TARGETS ${TOOLS} RUNTIME DESTINATION bin COMPONENT Utilities)
 
-target_link_libraries(appendLinesAlongPolyline MeshGeoToolsLib ApplicationsFileIO)
-target_link_libraries(CreateBoundaryConditionsAlongPolylines MeshGeoToolsLib ApplicationsFileIO)
+target_link_libraries(appendLinesAlongPolyline MeshGeoToolsLib
+                      ApplicationsFileIO)
+target_link_libraries(CreateBoundaryConditionsAlongPolylines MeshGeoToolsLib
+                      ApplicationsFileIO)
 target_link_libraries(createLayeredMeshFromRasters ApplicationsFileIO)
 target_link_libraries(MapGeometryToMeshSurface MeshGeoToolsLib)
 target_link_libraries(ResetPropertiesInPolygonalRegion ApplicationsFileIO)
diff --git a/Applications/Utils/MeshGeoTools/CMakeLists.txt b/Applications/Utils/MeshGeoTools/CMakeLists.txt
index 240aff55f602b4579385708c9b247140ece97ed2..c5b69d1e445070fd097c89810d2aa1eaeaa8fd14 100644
--- a/Applications/Utils/MeshGeoTools/CMakeLists.txt
+++ b/Applications/Utils/MeshGeoTools/CMakeLists.txt
@@ -1,8 +1,5 @@
-set(TOOLS
-    computeSurfaceNodeIDsInPolygonalRegion
-    constructMeshesFromGeometry
-    identifySubdomains
-)
+set(TOOLS computeSurfaceNodeIDsInPolygonalRegion constructMeshesFromGeometry
+          identifySubdomains)
 foreach(TOOL ${TOOLS})
     add_executable(${TOOL} ${TOOL}.cpp)
     target_link_libraries(${TOOL} MeshLib ApplicationsFileIO MeshGeoToolsLib)
diff --git a/Applications/Utils/ModelPreparation/CMakeLists.txt b/Applications/Utils/ModelPreparation/CMakeLists.txt
index 54bf77437d50a79583126aff384f15a3b32cedd5..2433d9ab5f6d9f134183436014e8d0f3271346bf 100644
--- a/Applications/Utils/ModelPreparation/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/CMakeLists.txt
@@ -1,9 +1,5 @@
-set(TOOLS
-    ComputeNodeAreasFromSurfaceMesh
-    convertVtkDataArrayToVtkDataArray
-    createNeumannBc
-    scaleProperty
-)
+set(TOOLS ComputeNodeAreasFromSurfaceMesh convertVtkDataArrayToVtkDataArray
+          createNeumannBc scaleProperty)
 foreach(TOOL ${TOOLS})
     add_executable(${TOOL} ${TOOL}.cpp)
     target_link_libraries(${TOOL} MeshLib)
diff --git a/Applications/Utils/OGSFileConverter/CMakeLists.txt b/Applications/Utils/OGSFileConverter/CMakeLists.txt
index 54361c9e05689418a01f545a0fee4a0dca615f80..ec758b6a05f930d0c1ee726b246c38938d34536a 100644
--- a/Applications/Utils/OGSFileConverter/CMakeLists.txt
+++ b/Applications/Utils/OGSFileConverter/CMakeLists.txt
@@ -1,33 +1,24 @@
-add_library(OGSFileConverterLib
-    FileListDialog.h
-    OGSFileConverter.h
-    FileListDialog.cpp
-    OGSFileConverter.cpp
-)
+add_library(OGSFileConverterLib FileListDialog.h OGSFileConverter.h
+                                FileListDialog.cpp OGSFileConverter.cpp)
 target_link_libraries(OGSFileConverterLib
-    PUBLIC ApplicationsFileIO MathLib QtBase ${VTK_LIBRARIES}
-    INTERFACE MeshLib
-)
+                      PUBLIC ApplicationsFileIO MathLib QtBase ${VTK_LIBRARIES}
+                      INTERFACE MeshLib)
 if(BUILD_SHARED_LIBS)
-    install(TARGETS OGSFileConverterLib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS OGSFileConverterLib
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-set_target_properties(OGSFileConverterLib PROPERTIES
-    AUTOMOC TRUE
-    AUTOUIC TRUE
-)
+set_target_properties(OGSFileConverterLib PROPERTIES AUTOMOC TRUE AUTOUIC TRUE)
 
 add_executable(OGSFileConverter main.cpp)
 
 target_link_libraries(OGSFileConverter
-    PUBLIC OGSFileConverterLib ApplicationsFileIO
-)
+                      PUBLIC OGSFileConverterLib ApplicationsFileIO)
 
 add_autogen_include(OGSFileConverterLib)
 
 set_target_properties(OGSFileConverter OGSFileConverterLib
-    PROPERTIES FOLDER "Utilities"
-)
+                      PROPERTIES FOLDER "Utilities")
 
 if(OGS_USE_PCH)
     cotire(OGSFileConverterLib)
diff --git a/Applications/Utils/PostProcessing/CMakeLists.txt b/Applications/Utils/PostProcessing/CMakeLists.txt
index 06016e3a38b433cd0ffc99e3deb2d9ac4daeeba1..52469fed16de8045ae6eaa58c47fa17e8e26705f 100644
--- a/Applications/Utils/PostProcessing/CMakeLists.txt
+++ b/Applications/Utils/PostProcessing/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 if(OGS_BUILD_PROCESS_LIE)
     add_executable(postLIE postLIE.cpp)
     target_link_libraries(postLIE LIECommon)
diff --git a/Applications/Utils/SWMMConverter/CMakeLists.txt b/Applications/Utils/SWMMConverter/CMakeLists.txt
index 59b62127999a130f10de34d5e3a04a0103baaadb..1b78a128bc835e68dcecb9195a2aeb72230ebabb 100644
--- a/Applications/Utils/SWMMConverter/CMakeLists.txt
+++ b/Applications/Utils/SWMMConverter/CMakeLists.txt
@@ -1,10 +1,9 @@
 add_executable(SWMMConverter SWMMConverter.cpp)
 target_link_libraries(SWMMConverter
-    ApplicationsFileIO
-    GeoLib
-    MeshLib
-    SwmmInterface
-)
-include_directories( ${PROJECT_SOURCE_DIR}/Applications/FileIO )
+                      ApplicationsFileIO
+                      GeoLib
+                      MeshLib
+                      SwmmInterface)
+include_directories(${PROJECT_SOURCE_DIR}/Applications/FileIO)
 set_target_properties(SWMMConverter PROPERTIES FOLDER Utilities)
 install(TARGETS SWMMConverter RUNTIME DESTINATION bin COMPONENT Utilities)
diff --git a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
index 98767fae4f4819cc3d7d535283fada9147e593e4..91562281a1b1b199ae3213e586a7212f783cc65b 100644
--- a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
+++ b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
@@ -1,21 +1,19 @@
-
 if(OGS_BUILD_GUI)
-    add_executable(createMeshElemPropertiesFromASCRaster createMeshElemPropertiesFromASCRaster.cpp)
-    set_target_properties(createMeshElemPropertiesFromASCRaster PROPERTIES FOLDER Utilities)
+    add_executable(createMeshElemPropertiesFromASCRaster
+                   createMeshElemPropertiesFromASCRaster.cpp)
+    set_target_properties(createMeshElemPropertiesFromASCRaster
+                          PROPERTIES FOLDER Utilities)
     target_link_libraries(createMeshElemPropertiesFromASCRaster
-        ApplicationsFileIO
-        MeshLib
-    )
+                          ApplicationsFileIO MeshLib)
 endif()
 
 add_executable(generateStructuredMesh generateStructuredMesh.cpp)
 target_link_libraries(generateStructuredMesh MeshLib)
 set_target_properties(generateStructuredMesh PROPERTIES FOLDER Utilities)
 
-install(TARGETS generateStructuredMesh RUNTIME DESTINATION bin
-    COMPONENT Utilities)
+install(TARGETS generateStructuredMesh
+        RUNTIME DESTINATION bin COMPONENT Utilities)
 if(OGS_BUILD_GUI)
     install(TARGETS createMeshElemPropertiesFromASCRaster
-        RUNTIME DESTINATION bin
-        COMPONENT Utilities)
+            RUNTIME DESTINATION bin COMPONENT Utilities)
 endif()
diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt
index 52f8a8e03dbe8ee131757bd08e5b88eb48eece96..b84f20bc1aa60bedbaf0fe0184a2eca40bdddd62 100644
--- a/BaseLib/CMakeLists.txt
+++ b/BaseLib/CMakeLists.txt
@@ -1,10 +1,10 @@
-GET_SOURCE_FILES(SOURCES)
-APPEND_SOURCE_FILES(SOURCES IO)
+get_source_files(SOURCES)
+append_source_files(SOURCES IO)
 
-APPEND_SOURCE_FILES(SOURCES IO/XmlIO)
+append_source_files(SOURCES IO/XmlIO)
 
 if(OGS_BUILD_GUI)
-    APPEND_SOURCE_FILES(SOURCES IO/XmlIO/Qt)
+    append_source_files(SOURCES IO/XmlIO/Qt)
 endif()
 
 list(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/BuildInfo.cpp" BuildInfo.h)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 68f832c2f52679bd74f663893675d28898004169..efbc30c5324cd5dae4801c6c6102f3178f9e8025 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,41 +1,29 @@
-#####################
-### OGS-6 Project ###
-#####################
-
-# Specify minimum CMake version
+# ---- OGS-6 Project ----
 cmake_minimum_required(VERSION 3.12)
 
 # Set CMake policies
-cmake_policy(SET CMP0011 NEW)
 cmake_policy(SET CMP0054 NEW)
-if(POLICY CMP0071)
-    cmake_policy(SET CMP0071 NEW)
-endif()
-if(POLICY CMP0074)
-    cmake_policy(SET CMP0074 NEW)
-endif()
+cmake_policy(SET CMP0071 NEW)
+cmake_policy(SET CMP0074 NEW)
 
-if(WIN32 AND
-    NOT ${CMAKE_GENERATOR} STREQUAL Ninja AND
-    NOT ${CMAKE_GENERATOR} MATCHES 2015) # does not work on 2015
+if(WIN32 AND NOT ${CMAKE_GENERATOR} STREQUAL Ninja)
     # Force 64-bit VS compiler
     set(CMAKE_GENERATOR_TOOLSET host=x64)
 endif()
 
-# Project name
-project( OGS-6 )
+project(OGS-6)
 
 include(scripts/cmake/CMakeSetup.cmake)
 include(ParseCMakeArgs)
 include(CTest)
 
-###########################
-### Preliminary Options ###
-###########################
+# ---- Preliminary Options ----
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 option(BUILD_SHARED_LIBS "Create shared libraries?" OFF)
-set(CMAKE_LIBRARY_SEARCH_PATH "" CACHE PATH
-    "Additional library installation path, e.g. /opt/local or C:/libs")
+set(CMAKE_LIBRARY_SEARCH_PATH
+    ""
+    CACHE PATH
+          "Additional library installation path, e.g. /opt/local or C:/libs")
 set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, \
     defaults to native (*nix) / blend (MSVC).")
 option(OGS_ENABLE_AVX2 "Enable the use of AVX2 instructions" OFF)
@@ -45,14 +33,24 @@ if(DEFINED CMAKE_CXX_CLANG_TIDY)
 endif()
 option(OGS_USE_CONAN "Should Conan package manager be used?" ON)
 set(OGS_CONAN_BUILD "missing" CACHE STRING "Possible values: all, missing, \
-    never or list of libs to build" )
+    never or list of libs to build")
 
 # Third-party libraries, names come from Conan package names
 set(OGS_LIBS
-    vtk boost eigen qt shapelib libgeotiff petsc lis cvode
+    vtk
+    boost
+    eigen
+    qt
+    shapelib
+    libgeotiff
+    petsc
+    lis
+    cvode
     CACHE INTERNAL "")
 foreach(LIB ${OGS_LIBS})
-    set(OGS_LIB_${LIB} "Default" CACHE STRING "Which ${LIB} library should be used?")
+    set(OGS_LIB_${LIB}
+        "Default"
+        CACHE STRING "Which ${LIB} library should be used?")
     set_property(CACHE OGS_LIB_${LIB} PROPERTY STRINGS "Default" "System")
 endforeach(LIB)
 
@@ -61,7 +59,7 @@ if(OGS_USE_PETSC)
 endif()
 option(OGS_USE_CVODE "Use the Sundials CVODE module?" OFF)
 
-### CMake includes ###
+# ---- CMake includes ----
 include(PreFind)
 include(CheckTypeSizes)
 include(Functions)
@@ -78,18 +76,14 @@ if(OGS_COVERAGE AND NOT IS_SUBPROJECT)
 endif()
 include(CppCheck)
 
-####################
-### More Options ###
-####################
+# ---- More Options ----
 
 # Profiling
 if((CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) AND GPROF_PATH)
-    option(OGS_PROFILE "Enables compiling with flags set for profiling with gprof." OFF)
+    option(OGS_PROFILE
+           "Enables compiling with flags set for profiling with gprof." OFF)
 endif() # GCC AND GPROF_PATH
 
-# Enable / Disable parts
-option(OGS_DONT_USE_QT "Disables all Qt specific code." OFF)
-
 option(OGS_BUILD_CLI "Should the OGS simulator be built?" ON)
 option(OGS_BUILD_GUI "Should the Data Explorer be built?" OFF)
 if(OGS_BUILD_GUI)
@@ -99,11 +93,10 @@ endif()
 option(OGS_BUILD_UTILS "Should the utilities programms be built?" OFF)
 if(OGS_BUILD_UTILS AND OGS_USE_MPI)
     message(WARNING "OGS_BUILD_UTILS cannot be used with OGS_USE_MPI "
-        "(OGS_USE_PETSC)! Disabling OGS_BUILD_UTILS.")
+                    "(OGS_USE_PETSC)! Disabling OGS_BUILD_UTILS.")
     set(OGS_BUILD_UTILS OFF CACHE BOOL "" FORCE)
 endif()
 
-
 # A list of processes to be build. Also used in the ProcessLib to select
 # processes to be build.
 set(ProcessesList
@@ -134,12 +127,17 @@ foreach(process ${ProcessesList})
     option(OGS_BUILD_PROCESS_${process} "Build the ${process} process." ON)
 endforeach()
 
-set(OGS_BUILD_PROCESSES "" CACHE STRING "Semicolon-separated list of processes to build")
+set(OGS_BUILD_PROCESSES
+    ""
+    CACHE STRING "Semicolon-separated list of processes to build")
 if(NOT "${OGS_BUILD_PROCESSES}" STREQUAL "")
     foreach(process ${OGS_BUILD_PROCESSES})
         if(NOT "${process}" IN_LIST ProcessesList)
-            message(FATAL_ERROR "${process} given in OGS_BUILD_PROCESSES is "
-                "not a valid process name! Valid names are ${ProcessesList}")
+            message(
+                FATAL_ERROR
+                    "${process} given in OGS_BUILD_PROCESSES is "
+                    "not a valid process name! Valid names are ${ProcessesList}"
+                )
         endif()
     endforeach()
     message(STATUS "Enabled processes:")
@@ -162,13 +160,8 @@ if(NOT WIN32 AND OGS_BUILD_SWMM)
 endif()
 
 option(OGS_NO_EXTERNAL_LIBS "Builds OGS without any external dependencies." OFF)
-
 option(OGS_INSITU "Builds OGS with insitu visualization capabilities." OFF)
-
-# Linear solvers
 option(OGS_USE_LIS "Use Lis" OFF)
-
-# Parallel computing: vector and matrix algebraic caculation, solvers
 option(OGS_USE_PETSC "Use PETSc routines" OFF)
 
 # Eigen
@@ -177,41 +170,46 @@ option(OGS_USE_EIGEN_UNSUPPORTED "Use Eigen unsupported modules" ON)
 option(OGS_EIGEN_INITIALIZE_MATRICES_BY_NAN "" ON)
 option(EIGEN_NO_DEBUG "Disables Eigen's assertions" OFF)
 
-# We assume that it's save to use vectorization with Eigen < 3.3 (strictly smaller than 3.3.!).
-# At least we only observed vectorization issues with Eigen 3.3.x.
-# If you want to use Eigen vectorization, make sure that you run all the ctests several times, e.g.:
-# $ ctest --repeat-until-fail 50
-# You might also want to take a look at https://github.com/ufz/ogs/issues/1881.
+# We assume that it's save to use vectorization with Eigen < 3.3 (strictly
+# smaller than 3.3.!). At least we only observed vectorization issues with Eigen
+# 3.3.x. If you want to use Eigen vectorization, make sure that you run all the
+# ctests several times, e.g.: $ ctest --repeat-until-fail 50 You might also want
+# to take a look at https://github.com/ufz/ogs/issues/1881.
 option(EIGEN_DONT_VECTORIZE "Disables explicit vectorization when defined." ON)
 
-set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES "Default" CACHE STRING "Use dynamically allocated shape matrices")
+set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES
+    "Default"
+    CACHE STRING "Use dynamically allocated shape matrices")
 set_property(CACHE OGS_EIGEN_DYNAMIC_SHAPE_MATRICES
              PROPERTY STRINGS "Default" "ON" "OFF")
 
 if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES STREQUAL "Default")
-    if(CMAKE_BUILD_TYPE STREQUAL "Release" OR
-        CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+    if(CMAKE_BUILD_TYPE STREQUAL "Release"
+       OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
         set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL OFF)
     else()
         set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL ON)
     endif()
 else()
-    set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL ${OGS_EIGEN_DYNAMIC_SHAPE_MATRICES})
+    set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL
+        ${OGS_EIGEN_DYNAMIC_SHAPE_MATRICES})
 endif()
+# Eigen End
 
-# MKL
 option(OGS_USE_MKL "Use Intel MKL" OFF)
 
 # Logging
-set(OGS_LOG_LEVEL "LOGOG_LEVEL_DEBUG" CACHE STRING "Set logging level included in compilation.")
-set_property(CACHE OGS_LOG_LEVEL PROPERTY STRINGS
-    LOGOG_LEVEL_NONE
-    LOGOG_LEVEL_ERROR
-    LOGOG_LEVEL_WARN
-    LOGOG_LEVEL_INFO
-    LOGOG_LEVEL_DEBUG
-    LOGOG_LEVEL_ALL
-)
+set(OGS_LOG_LEVEL
+    "LOGOG_LEVEL_DEBUG"
+    CACHE STRING "Set logging level included in compilation.")
+set_property(CACHE OGS_LOG_LEVEL
+             PROPERTY STRINGS
+                      LOGOG_LEVEL_NONE
+                      LOGOG_LEVEL_ERROR
+                      LOGOG_LEVEL_WARN
+                      LOGOG_LEVEL_INFO
+                      LOGOG_LEVEL_DEBUG
+                      LOGOG_LEVEL_ALL)
 
 # Debug
 option(OGS_FATAL_ABORT "Abort in OGS_FATAL" OFF)
@@ -221,36 +219,44 @@ set(OGS_CXX_FLAGS "" CACHE STRING "Additional C++ compiler flags.")
 option(STL_NO_DEBUG "Disable STL debug in debug build" OFF)
 
 # Print CMake variable values
-if (OGS_CMAKE_DEBUG)
+if(OGS_CMAKE_DEBUG)
     include(ListAllCMakeVariableValues)
     list_all_cmake_variable_values()
-endif ()
+endif()
 
 # Code coverage
 option(OGS_COVERAGE "Enables code coverage measurements with gcov/lcov." OFF)
 
-option(OGS_SYNC_SUBMODULES "Sync git submodules on CMake run. Overwrites custom URLs!" ON)
+option(OGS_SYNC_SUBMODULES
+       "Sync git submodules on CMake run. Overwrites custom URLs!" ON)
 
 # Options controlling which FEM elements will be compiled
-set(OGS_MAX_ELEMENT_DIM   3 CACHE STRING "Maximum dimension of FEM elements to be built.")
-set(OGS_MAX_ELEMENT_ORDER 2 CACHE STRING "Maximum order of FEM elements to be built.")
-option(OGS_ENABLE_ELEMENT_SIMPLEX "Build FEM elements for simplices (triangles, tetrahedra)." ON)
-option(OGS_ENABLE_ELEMENT_CUBOID  "Build FEM elements for cuboids (quads, hexahedra)." ON)
-option(OGS_ENABLE_ELEMENT_PRISM   "Build FEM elements for prisms." ON)
+set(OGS_MAX_ELEMENT_DIM
+    3
+    CACHE STRING "Maximum dimension of FEM elements to be built.")
+set(OGS_MAX_ELEMENT_ORDER
+    2
+    CACHE STRING "Maximum order of FEM elements to be built.")
+option(OGS_ENABLE_ELEMENT_SIMPLEX
+       "Build FEM elements for simplices (triangles, tetrahedra)." ON)
+option(OGS_ENABLE_ELEMENT_CUBOID
+       "Build FEM elements for cuboids (quads, hexahedra)." ON)
+option(OGS_ENABLE_ELEMENT_PRISM "Build FEM elements for prisms." ON)
 option(OGS_ENABLE_ELEMENT_PYRAMID "Build FEM elements for pyramids." ON)
 
-option(OGS_CHECK_HEADER_COMPILATION "Check header for standalone compilation." OFF)
+option(OGS_CHECK_HEADER_COMPILATION "Check header for standalone compilation."
+       OFF)
 
 option(OGS_USE_PYTHON "Interface with Python" OFF)
 if(OGS_USE_PYTHON AND NOT Python_FOUND)
     message(FATAL_ERROR "Python not found but required for OGS_USE_PYTHON=ON!")
 endif()
 
-option(OGS_USE_MFRONT "Enable solid material models by MFront (https://tfel.sourceforge.net)" OFF)
+option(OGS_USE_MFRONT
+       "Enable solid material models by MFront (https://tfel.sourceforge.net)"
+       OFF)
 
-###################
-### Definitions ###
-###################
+# ---- Definitions ----
 if(OGS_USE_LIS)
     add_definitions(-DUSE_LIS)
     include_directories(SYSTEM ${LIS_INCLUDE_DIR})
@@ -266,7 +272,6 @@ if(OGS_USE_PETSC)
     add_definitions(-DUSE_PETSC)
 endif()
 
-# Use MPI
 if(OGS_USE_MPI)
     add_definitions(-DUSE_MPI)
 endif()
@@ -276,11 +281,11 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
     add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_NAN)
 endif()
 
-if (EIGEN_NO_DEBUG)
+if(EIGEN_NO_DEBUG)
     add_definitions(-DEIGEN_NO_DEBUG)
 endif()
 
-if (EIGEN_DONT_VECTORIZE)
+if(EIGEN_DONT_VECTORIZE)
     add_definitions(-DEIGEN_DONT_VECTORIZE)
 endif()
 
@@ -302,62 +307,59 @@ if(MSVC AND OGS_32_BIT)
 endif()
 # End Eigen
 
-if (OGS_FATAL_ABORT)
+if(OGS_FATAL_ABORT)
     add_definitions(-DOGS_FATAL_ABORT)
 endif()
 
-# Logging level
 add_definitions(-DLOGOG_LEVEL=${OGS_LOG_LEVEL})
 
 # Packaging
-option(OGS_DOWNLOAD_ADDITIONAL_CONTENT "Should additional content such as manuals be downloaded and packaged?" OFF)
+option(OGS_DOWNLOAD_ADDITIONAL_CONTENT
+       "Should additional content such as manuals be downloaded and packaged?"
+       OFF)
 include(scripts/cmake/packaging/Pack.cmake)
 
-######################
-### Subdirectories ###
-######################
+# ---- Subdirectories ----
 
 # External projects
 if(OGS_INSITU)
     include("${PARAVIEW_USE_FILE}")
     add_definitions(-DUSE_INSITU)
 endif()
-
-
-# Add subdirectories with the projects
-add_subdirectory( ThirdParty )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/googletest/googletest/include )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/autocheck/include )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/tclap/include )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include )
-include_directories( SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk )
+add_subdirectory(ThirdParty)
+include_directories(
+    SYSTEM
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/googletest/googletest/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/autocheck/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/tclap/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/exprtk)
 
 include(scripts/cmake/CheckHeaderCompilation.cmake)
 
-add_subdirectory( Applications )
-add_subdirectory( BaseLib )
-add_subdirectory( GeoLib )
-add_subdirectory( MathLib )
-add_subdirectory( MeshLib )
-add_subdirectory( MeshGeoToolsLib )
-add_subdirectory( NumLib )
-add_subdirectory( ChemistryLib )
+add_subdirectory(Applications)
+add_subdirectory(BaseLib)
+add_subdirectory(GeoLib)
+add_subdirectory(MathLib)
+add_subdirectory(MeshLib)
+add_subdirectory(MeshGeoToolsLib)
+add_subdirectory(NumLib)
+add_subdirectory(ChemistryLib)
 if(OGS_BUILD_CLI OR OGS_BUILD_UTILS OR BUILD_TESTING)
-    add_subdirectory( ParameterLib )
-    add_subdirectory( MaterialLib )
-    add_subdirectory( ProcessLib )
+    add_subdirectory(ParameterLib)
+    add_subdirectory(MaterialLib)
+    add_subdirectory(ProcessLib)
 endif()
-if( BUILD_TESTING AND NOT IS_SUBPROJECT )
-    add_subdirectory( Tests )
+if(BUILD_TESTING AND NOT IS_SUBPROJECT)
+    add_subdirectory(Tests)
 endif()
 
 file(WRITE ${PROJECT_BINARY_DIR}/disabled-tests.log "${DISABLED_TESTS_LOG}")
 unset(DISABLED_TESTS_LOG CACHE) # Don't write to CMakeCache.txt
 
-# The configuration must be called from the source dir and not BaseLib/.
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/BaseLib/BuildInfo.cpp.in"
-    "${CMAKE_CURRENT_BINARY_DIR}/BaseLib/BuildInfo.cpp" @ONLY)
+               "${CMAKE_CURRENT_BINARY_DIR}/BaseLib/BuildInfo.cpp" @ONLY)
 
 check_header_compilation()
 
diff --git a/ChemistryLib/CMakeLists.txt b/ChemistryLib/CMakeLists.txt
index 00b1349a2095b592ad7ffd16d2321697770bd7f2..e7960b2755b34d20a509623687447fc6e6d267ff 100644
--- a/ChemistryLib/CMakeLists.txt
+++ b/ChemistryLib/CMakeLists.txt
@@ -1,4 +1,4 @@
-#Source files grouped by a directory
+# Source files grouped by a directory
 get_source_files(SOURCES)
 append_source_files(SOURCES PhreeqcIOData)
 
@@ -11,10 +11,7 @@ endif()
 include(GenerateExportHeader)
 generate_export_header(ChemistryLib)
 
-target_link_libraries(ChemistryLib
-    PUBLIC iphreeqc
-    PRIVATE NumLib
-)
+target_link_libraries(ChemistryLib PUBLIC iphreeqc PRIVATE NumLib)
 
 if(OGS_USE_PCH)
     cotire(ChemistryLib)
diff --git a/Documentation/mainpage.dox b/Documentation/mainpage.dox
index 063eaccb9d130382ac0e33f448f147b7822e1842..bbbd5d8cdcb19a87d23f5bd2e5d99ffce43b68a1 100644
--- a/Documentation/mainpage.dox
+++ b/Documentation/mainpage.dox
@@ -7,7 +7,7 @@
  * - Wiki: https://svn.ufz.de/ogs
  * - Developer guide: http://docs.opengeosys.org/docs/devguide
  * - Data Explorer (Gui) manual: http://docs.opengeosys.org/assets/releases/head/docs/DataExplorer-Manual.pdf
- * - Mailing list: https://groups.google.com/forum/#!forum/ogs-users
+ * - Discussion forum: https://discourse.opengeosys.org
  * - Jenkins build server: https://svn.ufz.de/hudson
  *
  *
diff --git a/GeoLib/CMakeLists.txt b/GeoLib/CMakeLists.txt
index 7c9fbf1599543793a1ca00db1111bb50db2b1712..c2dc61b9c27c046afd117f38c8227d11f9b9ebb5 100644
--- a/GeoLib/CMakeLists.txt
+++ b/GeoLib/CMakeLists.txt
@@ -1,13 +1,13 @@
 # Source files
-GET_SOURCE_FILES(SOURCES)
+get_source_files(SOURCES)
 
-APPEND_SOURCE_FILES(SOURCES IO)
+append_source_files(SOURCES IO)
 
-APPEND_SOURCE_FILES(SOURCES IO/XmlIO/Rapid)
-APPEND_SOURCE_FILES(SOURCES IO/XmlIO/Boost)
+append_source_files(SOURCES IO/XmlIO/Rapid)
+append_source_files(SOURCES IO/XmlIO/Boost)
 
 if(OGS_BUILD_GUI)
-    APPEND_SOURCE_FILES(SOURCES IO/XmlIO/Qt)
+    append_source_files(SOURCES IO/XmlIO/Qt)
 endif()
 
 # Create the library
@@ -26,6 +26,10 @@ if(OGS_USE_PCH)
     cotire(GeoLib)
 endif()
 
-configure_file(IO/XmlIO/OpenGeoSysGLI.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysGLI.xsd COPYONLY)
-configure_file(IO/XmlIO/OpenGeoSysSTN.xsd ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysSTN.xsd COPYONLY)
-install(FILES IO/XmlIO/OpenGeoSysGLI.xsd IO/XmlIO/OpenGeoSysSTN.xsd DESTINATION bin COMPONENT ogs_cli)
+configure_file(IO/XmlIO/OpenGeoSysGLI.xsd
+               ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysGLI.xsd COPYONLY)
+configure_file(IO/XmlIO/OpenGeoSysSTN.xsd
+               ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/OpenGeoSysSTN.xsd COPYONLY)
+install(FILES IO/XmlIO/OpenGeoSysGLI.xsd IO/XmlIO/OpenGeoSysSTN.xsd
+        DESTINATION bin
+        COMPONENT ogs_cli)
diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt
index 6af23f988eb9a916ddd63dc5d84d751fdb973d82..a173181bb77446b500c900e61f153852a5b56106 100644
--- a/MaterialLib/CMakeLists.txt
+++ b/MaterialLib/CMakeLists.txt
@@ -24,7 +24,8 @@ append_source_files(SOURCES PorousMedium/Porosity)
 append_source_files(SOURCES PorousMedium/Storage)
 append_source_files(SOURCES PorousMedium/Permeability)
 append_source_files(SOURCES PorousMedium/UnsaturatedProperty/CapillaryPressure)
-append_source_files(SOURCES PorousMedium/UnsaturatedProperty/RelativePermeability)
+append_source_files(SOURCES
+                    PorousMedium/UnsaturatedProperty/RelativePermeability)
 append_source_files(SOURCES TwoPhaseModels)
 
 add_subdirectory(SolidModels/MFront)
@@ -36,14 +37,11 @@ endif()
 
 include(GenerateExportHeader)
 generate_export_header(MaterialLib)
-target_include_directories(MaterialLib
-    PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
-)
+target_include_directories(MaterialLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
 
 target_link_libraries(MaterialLib
-    PUBLIC MaterialLib_SolidModels_MFront
-    PRIVATE MathLib MeshLib ParameterLib
-)
+                      PUBLIC MaterialLib_SolidModels_MFront
+                      PRIVATE MathLib MeshLib ParameterLib)
 
 if(OGS_USE_PCH)
     cotire(MaterialLib)
diff --git a/MaterialLib/SolidModels/MFront/CMakeLists.txt b/MaterialLib/SolidModels/MFront/CMakeLists.txt
index a693ff0a812ea8497556dc6d7bfaa015787489e9..05b2a276d8e8d58fe98966a0899431742a2d5554 100644
--- a/MaterialLib/SolidModels/MFront/CMakeLists.txt
+++ b/MaterialLib/SolidModels/MFront/CMakeLists.txt
@@ -7,20 +7,18 @@ endif()
 add_library(MaterialLib_SolidModels_MFront ${SOURCES})
 
 if(BUILD_SHARED_LIBS)
-    install(TARGETS MaterialLib_SolidModels_MFront LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS MaterialLib_SolidModels_MFront
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(MaterialLib_SolidModels_MFront
-    PUBLIC BaseLib NumLib logog
-    PRIVATE MathLib MeshLib
-)
+                      PUBLIC BaseLib NumLib logog
+                      PRIVATE MathLib MeshLib)
 
-if (OGS_USE_MFRONT)
+if(OGS_USE_MFRONT)
     target_include_directories(MaterialLib_SolidModels_MFront
-        PUBLIC ${MGIS_INCLUDE_DIR}
-    )
-    target_link_libraries(MaterialLib_SolidModels_MFront
-        PUBLIC ${MGIS_LIBRARY}
-    )
-    target_compile_definitions(MaterialLib_SolidModels_MFront PRIVATE OGS_USE_MFRONT)
+                               PUBLIC ${MGIS_INCLUDE_DIR})
+    target_link_libraries(MaterialLib_SolidModels_MFront PUBLIC ${MGIS_LIBRARY})
+    target_compile_definitions(MaterialLib_SolidModels_MFront PRIVATE
+                               OGS_USE_MFRONT)
 endif()
diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt
index bbde7cd43d11c118b561ae712a5ee38cbfb60249..4b1030bcd5ee7097f830e2ee7a54e17a771756a6 100644
--- a/MathLib/CMakeLists.txt
+++ b/MathLib/CMakeLists.txt
@@ -1,27 +1,27 @@
-#Source files grouped by a directory
-GET_SOURCE_FILES(SOURCES)
+# Source files grouped by a directory
+get_source_files(SOURCES)
 
-APPEND_SOURCE_FILES(SOURCES Curve)
-APPEND_SOURCE_FILES(SOURCES InterpolationAlgorithms)
-APPEND_SOURCE_FILES(SOURCES Integration)
-APPEND_SOURCE_FILES(SOURCES LinAlg)
-APPEND_SOURCE_FILES(SOURCES LinAlg/Dense)
+append_source_files(SOURCES Curve)
+append_source_files(SOURCES InterpolationAlgorithms)
+append_source_files(SOURCES Integration)
+append_source_files(SOURCES LinAlg)
+append_source_files(SOURCES LinAlg/Dense)
 if(CVODE_FOUND)
-    APPEND_SOURCE_FILES(SOURCES ODE)
+    append_source_files(SOURCES ODE)
 endif()
-APPEND_SOURCE_FILES(SOURCES Nonlinear)
+append_source_files(SOURCES Nonlinear)
 
 if(OGS_USE_EIGEN)
-    APPEND_SOURCE_FILES(SOURCES LinAlg/Eigen)
+    append_source_files(SOURCES LinAlg/Eigen)
 endif()
 
 if(OGS_USE_LIS)
-    APPEND_SOURCE_FILES(SOURCES LinAlg/Lis)
-    APPEND_SOURCE_FILES(SOURCES LinAlg/EigenLis)
+    append_source_files(SOURCES LinAlg/Lis)
+    append_source_files(SOURCES LinAlg/EigenLis)
 endif()
 
 if(OGS_USE_PETSC)
-    APPEND_SOURCE_FILES(SOURCES LinAlg/PETSc)
+    append_source_files(SOURCES LinAlg/PETSc)
 endif()
 
 # Create the library
@@ -38,7 +38,7 @@ set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX)
 
 target_link_libraries(MathLib PUBLIC BaseLib logog ${OpenMP_CXX_LIBRARIES})
 
-if (CVODE_FOUND)
+if(CVODE_FOUND)
     target_include_directories(MathLib PRIVATE ${CVODE_INCLUDE_DIRS})
     target_link_libraries(MathLib PUBLIC ${CVODE_LIBRARIES})
 endif()
@@ -47,15 +47,15 @@ if(LAPACK_FOUND)
     target_link_libraries(MathLib PUBLIC ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})
 endif()
 
-if (OGS_USE_LIS)
+if(OGS_USE_LIS)
     target_link_libraries(MathLib PUBLIC ${LIS_LIBRARIES})
 endif()
 
-if (OGS_USE_MKL)
+if(OGS_USE_MKL)
     target_link_libraries(MathLib PUBLIC ${MKL_LIBRARIES})
 endif()
 
-if (OGS_USE_PETSC)
+if(OGS_USE_PETSC)
     target_include_directories(MathLib PUBLIC ${PETSC_INCLUDE_DIRS})
     target_link_libraries(MathLib PUBLIC ${PETSC_LIBRARIES})
 endif()
diff --git a/MeshGeoToolsLib/CMakeLists.txt b/MeshGeoToolsLib/CMakeLists.txt
index 983138fab6b6b443077c84392997c4d620e418b8..8a6ea49d716e8d158887d488f3d19923ecf23137 100644
--- a/MeshGeoToolsLib/CMakeLists.txt
+++ b/MeshGeoToolsLib/CMakeLists.txt
@@ -1,5 +1,5 @@
 # Source files
-GET_SOURCE_FILES(SOURCES)
+get_source_files(SOURCES)
 
 # Create the library
 add_library(MeshGeoToolsLib ${SOURCES})
@@ -8,9 +8,8 @@ if(BUILD_SHARED_LIBS)
 endif()
 
 target_link_libraries(MeshGeoToolsLib
-    PUBLIC GeoLib MathLib
-    PRIVATE BaseLib MeshLib logog
-)
+                      PUBLIC GeoLib MathLib
+                      PRIVATE BaseLib MeshLib logog)
 
 if(OGS_USE_PCH)
     cotire(MeshGeoToolsLib)
diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt
index 4f6299ed85aa72ff6836248601381dac27a3cc18..e92236424e017d68d213fadb0685e309f15ccc1a 100644
--- a/MeshLib/CMakeLists.txt
+++ b/MeshLib/CMakeLists.txt
@@ -1,23 +1,23 @@
-GET_SOURCE_FILES(SOURCES)
+get_source_files(SOURCES)
 
 # It should be removed too for other MPI based DDC approach in future.
 if(NOT OGS_USE_PETSC)
     list(REMOVE_ITEM SOURCES NodePartitionedMesh.h)
 endif()
 
-APPEND_SOURCE_FILES(SOURCES MeshEditing)
-APPEND_SOURCE_FILES(SOURCES MeshGenerators)
-APPEND_SOURCE_FILES(SOURCES MeshSearch)
-APPEND_SOURCE_FILES(SOURCES Elements)
-APPEND_SOURCE_FILES(SOURCES IO)
-APPEND_SOURCE_FILES(SOURCES IO/Legacy)
-APPEND_SOURCE_FILES(SOURCES IO/VtkIO)
-APPEND_SOURCE_FILES(SOURCES MeshQuality)
-APPEND_SOURCE_FILES(SOURCES Vtk)
+append_source_files(SOURCES MeshEditing)
+append_source_files(SOURCES MeshGenerators)
+append_source_files(SOURCES MeshSearch)
+append_source_files(SOURCES Elements)
+append_source_files(SOURCES IO)
+append_source_files(SOURCES IO/Legacy)
+append_source_files(SOURCES IO/VtkIO)
+append_source_files(SOURCES MeshQuality)
+append_source_files(SOURCES Vtk)
 
 # It could be used for other MPI based DDC approach in future.
 if(OGS_USE_PETSC)
-    APPEND_SOURCE_FILES(SOURCES IO/MPI_IO)
+    append_source_files(SOURCES IO/MPI_IO)
 endif()
 
 # Create the library
@@ -30,5 +30,8 @@ if(OGS_USE_PCH)
 endif()
 
 target_link_libraries(MeshLib
-    PUBLIC BaseLib GeoLib MathLib logog ${VTK_LIBRARIES}
-)
+                      PUBLIC BaseLib
+                             GeoLib
+                             MathLib
+                             logog
+                             ${VTK_LIBRARIES})
diff --git a/NumLib/CMakeLists.txt b/NumLib/CMakeLists.txt
index c1fae72c19152c09009bd6286f485e697b8c4109..7c744d1536b16a19e91e42de824cb7b34969bf68 100644
--- a/NumLib/CMakeLists.txt
+++ b/NumLib/CMakeLists.txt
@@ -1,17 +1,17 @@
-GET_SOURCE_FILES(SOURCES)
+get_source_files(SOURCES)
 
-APPEND_SOURCE_FILES(SOURCES Assembler)
-APPEND_SOURCE_FILES(SOURCES DOF)
-APPEND_SOURCE_FILES(SOURCES Fem)
-APPEND_SOURCE_FILES(SOURCES Fem/CoordinatesMapping)
-APPEND_SOURCE_FILES(SOURCES Fem/FiniteElement)
-APPEND_SOURCE_FILES(SOURCES Fem/Integration)
-APPEND_SOURCE_FILES(SOURCES Fem/ShapeFunction)
-APPEND_SOURCE_FILES(SOURCES TimeStepping)
-APPEND_SOURCE_FILES(SOURCES TimeStepping/Algorithms)
-APPEND_SOURCE_FILES(SOURCES Function)
-APPEND_SOURCE_FILES(SOURCES ODESolver)
-APPEND_SOURCE_FILES(SOURCES Extrapolation)
+append_source_files(SOURCES Assembler)
+append_source_files(SOURCES DOF)
+append_source_files(SOURCES Fem)
+append_source_files(SOURCES Fem/CoordinatesMapping)
+append_source_files(SOURCES Fem/FiniteElement)
+append_source_files(SOURCES Fem/Integration)
+append_source_files(SOURCES Fem/ShapeFunction)
+append_source_files(SOURCES TimeStepping)
+append_source_files(SOURCES TimeStepping/Algorithms)
+append_source_files(SOURCES Function)
+append_source_files(SOURCES ODESolver)
+append_source_files(SOURCES Extrapolation)
 
 # Create the library
 add_library(NumLib ${SOURCES})
@@ -25,9 +25,12 @@ target_include_directories(NumLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
 set_target_properties(NumLib PROPERTIES LINKER_LANGUAGE CXX)
 
 target_link_libraries(NumLib
-    PUBLIC BaseLib GeoLib MathLib MeshLib logog
-    PRIVATE MeshGeoToolsLib
-)
+                      PUBLIC BaseLib
+                             GeoLib
+                             MathLib
+                             MeshLib
+                             logog
+                      PRIVATE MeshGeoToolsLib)
 
 if(OGS_USE_PCH)
     cotire(NumLib)
diff --git a/ParameterLib/CMakeLists.txt b/ParameterLib/CMakeLists.txt
index 857be4c14f894b64dcde14ebb56845a4d783b822..59bd7e35266ad4eecc2c2c84e339254f1f60739d 100644
--- a/ParameterLib/CMakeLists.txt
+++ b/ParameterLib/CMakeLists.txt
@@ -8,9 +8,7 @@ endif()
 
 include(GenerateExportHeader)
 generate_export_header(ParameterLib)
-target_include_directories(ParameterLib
-    PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
-)
+target_include_directories(ParameterLib PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
 
 target_link_libraries(ParameterLib PRIVATE BaseLib MeshLib)
 
diff --git a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt
index 94dcceacb3726cf8b574bce1fdb511aebb4aea52..e8b743be32072db61e6d0a20b830da1c0dbabd0c 100644
--- a/ProcessLib/BoundaryCondition/Python/CMakeLists.txt
+++ b/ProcessLib/BoundaryCondition/Python/CMakeLists.txt
@@ -1,30 +1,32 @@
 add_library(ProcessLibBoundaryConditionPython
-    PythonBoundaryCondition.cpp
-    PythonBoundaryCondition.h
-    PythonBoundaryConditionLocalAssembler.h
-    PythonBoundaryConditionPythonSideInterface.h)
+            PythonBoundaryCondition.cpp PythonBoundaryCondition.h
+            PythonBoundaryConditionLocalAssembler.h
+            PythonBoundaryConditionPythonSideInterface.h)
 if(BUILD_SHARED_LIBS)
     install(TARGETS ProcessLibBoundaryConditionPython
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-target_compile_definitions(ProcessLibBoundaryConditionPython
-    PUBLIC OGS_USE_PYTHON)
+target_compile_definitions(ProcessLibBoundaryConditionPython PUBLIC
+                           OGS_USE_PYTHON)
 
 target_link_libraries(ProcessLibBoundaryConditionPython
-    PUBLIC BaseLib MathLib MeshLib NumLib logog ${Python_LIBRARIES}
-    PRIVATE pybind11::pybind11)
+                      PUBLIC BaseLib
+                             MathLib
+                             MeshLib
+                             NumLib
+                             logog
+                             ${Python_LIBRARIES}
+                      PRIVATE pybind11::pybind11)
 
 # For the embedded Python module
 add_library(ProcessLibBoundaryConditionPythonModule
-    PythonBoundaryConditionModule.cpp
-    PythonBoundaryConditionModule.h)
+            PythonBoundaryConditionModule.cpp PythonBoundaryConditionModule.h)
 if(BUILD_SHARED_LIBS)
     install(TARGETS ProcessLibBoundaryConditionPythonModule
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(ProcessLibBoundaryConditionPythonModule
-    PUBLIC
-    ProcessLibBoundaryConditionPython
-    pybind11::pybind11)
+                      PUBLIC ProcessLibBoundaryConditionPython
+                             pybind11::pybind11)
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index fac38bcd24df1a04d0096b8d6232ca0e4d179e1b..893b163d52b3233bcc3c4c034765ec198c07f4fe 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -10,13 +10,12 @@ foreach(process ${ProcessesList})
     endif()
 endforeach()
 
-
-APPEND_SOURCE_FILES(SOURCES)
-APPEND_SOURCE_FILES(SOURCES BoundaryCondition)
-APPEND_SOURCE_FILES(SOURCES SurfaceFlux)
-APPEND_SOURCE_FILES(SOURCES Output)
-APPEND_SOURCE_FILES(SOURCES SourceTerms)
-APPEND_SOURCE_FILES(SOURCES Utils)
+append_source_files(SOURCES)
+append_source_files(SOURCES BoundaryCondition)
+append_source_files(SOURCES SurfaceFlux)
+append_source_files(SOURCES Output)
+append_source_files(SOURCES SourceTerms)
+append_source_files(SOURCES Utils)
 
 add_library(ProcessLib ${SOURCES})
 if(BUILD_SHARED_LIBS)
@@ -24,27 +23,22 @@ if(BUILD_SHARED_LIBS)
 endif()
 
 target_link_libraries(ProcessLib
-    PUBLIC
-        BaseLib
-        MaterialLib
-        MathLib
-        MeshGeoToolsLib
-        MeshLib
-        NumLib
-        logog
-        ChemistryLib
-    PRIVATE
-        ParameterLib
-)
+                      PUBLIC BaseLib
+                             MaterialLib
+                             MathLib
+                             MeshGeoToolsLib
+                             MeshLib
+                             NumLib
+                             logog
+                             ChemistryLib
+                      PRIVATE ParameterLib)
 
 if(OGS_USE_PYTHON)
     add_subdirectory(BoundaryCondition/Python)
-    target_link_libraries(ProcessLib
-        PUBLIC ProcessLibBoundaryConditionPython)
+    target_link_libraries(ProcessLib PUBLIC ProcessLibBoundaryConditionPython)
 
     add_subdirectory(SourceTerms/Python)
-    target_link_libraries(ProcessLib
-        PUBLIC ProcessLibSourceTermPython)
+    target_link_libraries(ProcessLib PUBLIC ProcessLibSourceTermPython)
 endif()
 
 if(OGS_INSITU)
diff --git a/ProcessLib/ComponentTransport/CMakeLists.txt b/ProcessLib/ComponentTransport/CMakeLists.txt
index 15a0a6a3c54b221d2da26472c72344de90303e29..efc6c894edd0d3a8798393a5b903acb9588879de 100644
--- a/ProcessLib/ComponentTransport/CMakeLists.txt
+++ b/ProcessLib/ComponentTransport/CMakeLists.txt
@@ -1,13 +1,11 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(ComponentTransport ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS ComponentTransport LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS ComponentTransport
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-target_link_libraries(ComponentTransport
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(ComponentTransport PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/GroundwaterFlow/CMakeLists.txt b/ProcessLib/GroundwaterFlow/CMakeLists.txt
index c2aa630efeb6d20e878a5497ba0f7f526d104e43..2b6fa539084aa59d7ac783825a76e22523cdab33 100644
--- a/ProcessLib/GroundwaterFlow/CMakeLists.txt
+++ b/ProcessLib/GroundwaterFlow/CMakeLists.txt
@@ -1,13 +1,10 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(GroundwaterFlow ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS GroundwaterFlow LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-target_link_libraries(GroundwaterFlow
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(GroundwaterFlow PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/HT/CMakeLists.txt b/ProcessLib/HT/CMakeLists.txt
index 1cf1581847e218a58452bd21cf1f249545c069a4..e063a35a9a4a623d180ff6e0ad8ebe798a164631 100644
--- a/ProcessLib/HT/CMakeLists.txt
+++ b/ProcessLib/HT/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(HT ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS HT LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(HT
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(HT PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/HeatConduction/CMakeLists.txt b/ProcessLib/HeatConduction/CMakeLists.txt
index 5b1b842b98b83b0b5960dcc78ea090f9a6a5837c..ab5a1b398af85570d1a46c09c2a559ccdbe63755 100644
--- a/ProcessLib/HeatConduction/CMakeLists.txt
+++ b/ProcessLib/HeatConduction/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(HeatConduction ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS HeatConduction LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(HeatConduction
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(HeatConduction PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/HeatTransportBHE/CMakeLists.txt b/ProcessLib/HeatTransportBHE/CMakeLists.txt
index b9501a6007a31edcd395b0d12684469f30141ee9..daa5a552549346e2036b54607a48f15971d122aa 100644
--- a/ProcessLib/HeatTransportBHE/CMakeLists.txt
+++ b/ProcessLib/HeatTransportBHE/CMakeLists.txt
@@ -1,15 +1,13 @@
-APPEND_SOURCE_FILES(SOURCES)
-APPEND_SOURCE_FILES(SOURCES BHE)
-APPEND_SOURCE_FILES(SOURCES BoundaryConditions)
-APPEND_SOURCE_FILES(SOURCES LocalAssemblers)
+append_source_files(SOURCES)
+append_source_files(SOURCES BHE)
+append_source_files(SOURCES BoundaryConditions)
+append_source_files(SOURCES LocalAssemblers)
 
 add_library(HeatTransportBHE ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS HeatTransportBHE LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS HeatTransportBHE
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(HeatTransportBHE
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(HeatTransportBHE PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/HydroMechanics/CMakeLists.txt b/ProcessLib/HydroMechanics/CMakeLists.txt
index 924a3aec796c880dea61704475e70f2f53092ea6..1540a3a3583a31fb519cd168a9da9fc3291df648 100644
--- a/ProcessLib/HydroMechanics/CMakeLists.txt
+++ b/ProcessLib/HydroMechanics/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(HydroMechanics ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS HydroMechanics LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(HydroMechanics
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(HydroMechanics PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/LIE/CMakeLists.txt b/ProcessLib/LIE/CMakeLists.txt
index 8f82689a0e2fb74a6df19c514f3fb0e013b35e48..013de5c17312cb1c6ca92d3f0aab1960e3b6e735 100644
--- a/ProcessLib/LIE/CMakeLists.txt
+++ b/ProcessLib/LIE/CMakeLists.txt
@@ -1,17 +1,14 @@
 add_subdirectory(Common)
-APPEND_SOURCE_FILES(SOURCES HydroMechanics)
-APPEND_SOURCE_FILES(SOURCES HydroMechanics/LocalAssembler)
-APPEND_SOURCE_FILES(SOURCES SmallDeformation)
-APPEND_SOURCE_FILES(SOURCES SmallDeformation/LocalAssembler)
+append_source_files(SOURCES HydroMechanics)
+append_source_files(SOURCES HydroMechanics/LocalAssembler)
+append_source_files(SOURCES SmallDeformation)
+append_source_files(SOURCES SmallDeformation/LocalAssembler)
 
 add_library(LIE ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS LIE LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(LIE
-    PUBLIC ProcessLib LIECommon
-    PRIVATE ParameterLib
-)
+target_link_libraries(LIE PUBLIC ProcessLib LIECommon PRIVATE ParameterLib)
 
 include(HydroMechanics/Tests.cmake)
 include(SmallDeformation/Tests.cmake)
diff --git a/ProcessLib/LIE/Common/CMakeLists.txt b/ProcessLib/LIE/Common/CMakeLists.txt
index 35b8683e7b782034a55ad72c792cad2b9001533c..807b396591c6f2474e380d1574cb20e52ff0ac08 100644
--- a/ProcessLib/LIE/Common/CMakeLists.txt
+++ b/ProcessLib/LIE/Common/CMakeLists.txt
@@ -1,4 +1,4 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(LIECommon ${SOURCES})
 if(BUILD_SHARED_LIBS)
diff --git a/ProcessLib/LiquidFlow/CMakeLists.txt b/ProcessLib/LiquidFlow/CMakeLists.txt
index ff8694cc576af6e9f0fcabea5a591636685d6560..bfc4de9797779e6ec414207c7618d8c2cf8aa45c 100644
--- a/ProcessLib/LiquidFlow/CMakeLists.txt
+++ b/ProcessLib/LiquidFlow/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(LiquidFlow ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS LiquidFlow LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(LiquidFlow
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(LiquidFlow PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/PhaseField/CMakeLists.txt b/ProcessLib/PhaseField/CMakeLists.txt
index 03c6de7205b747233cd055394adca8f800276105..0923fa969b6c43e690d1ae7d9a0b12fab5c00c5a 100644
--- a/ProcessLib/PhaseField/CMakeLists.txt
+++ b/ProcessLib/PhaseField/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(PhaseField ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS PhaseField LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(PhaseField
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(PhaseField PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/RichardsComponentTransport/CMakeLists.txt b/ProcessLib/RichardsComponentTransport/CMakeLists.txt
index 1727d5762755dc26cde5b83cad7bca70bc88e626..78d38e8fb1114249d6aabc867b85ac1d41ecd730 100644
--- a/ProcessLib/RichardsComponentTransport/CMakeLists.txt
+++ b/ProcessLib/RichardsComponentTransport/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(RichardsComponentTransport ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS RichardsComponentTransport LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS RichardsComponentTransport
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(RichardsComponentTransport
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/RichardsFlow/CMakeLists.txt b/ProcessLib/RichardsFlow/CMakeLists.txt
index e0cf9f1684c62e3a2e3a86e017c0244fc998067c..cb2110ef2f5e9cb9174c9be55d358bac034e6e47 100644
--- a/ProcessLib/RichardsFlow/CMakeLists.txt
+++ b/ProcessLib/RichardsFlow/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(RichardsFlow ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS RichardsFlow LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(RichardsFlow
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(RichardsFlow PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/RichardsMechanics/CMakeLists.txt b/ProcessLib/RichardsMechanics/CMakeLists.txt
index 8dc36b502aa066f28f82943259ae5c44a7a2cc2c..78346233e41f233c2471db93d0166d79433d4cd9 100644
--- a/ProcessLib/RichardsMechanics/CMakeLists.txt
+++ b/ProcessLib/RichardsMechanics/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(RichardsMechanics ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS RichardsMechanics LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS RichardsMechanics
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(RichardsMechanics
-    PUBLIC ProcessLib
-    PRIVATE RichardsFlow ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE RichardsFlow ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/SmallDeformation/CMakeLists.txt b/ProcessLib/SmallDeformation/CMakeLists.txt
index 462c3245b63dabed9df2945d1f457d61bb16a44f..8895ecd510855c69563deebbf37a8cfda876be18 100644
--- a/ProcessLib/SmallDeformation/CMakeLists.txt
+++ b/ProcessLib/SmallDeformation/CMakeLists.txt
@@ -1,12 +1,10 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(SmallDeformation ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS SmallDeformation LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS SmallDeformation
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(SmallDeformation
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(SmallDeformation PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt b/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt
index aeb0fa859b72c882f5e9a704228145e98b0515ea..cf8bba5b8f2dedc3252d780674cdbb3225fa9027 100644
--- a/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt
+++ b/ProcessLib/SmallDeformationNonlocal/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(SmallDeformationNonlocal ${SOURCES})
 target_link_libraries(SmallDeformationNonlocal
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 if(BUILD_SHARED_LIBS)
-    install(TARGETS SmallDeformationNonlocal LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS SmallDeformationNonlocal
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 include(Tests.cmake)
diff --git a/ProcessLib/SourceTerms/Python/CMakeLists.txt b/ProcessLib/SourceTerms/Python/CMakeLists.txt
index 2fe58ad12a40af27a83d8bde04fe0f2d2cbb775f..10caeb8e50945893bae944ba72e2fd35f3f8c61f 100644
--- a/ProcessLib/SourceTerms/Python/CMakeLists.txt
+++ b/ProcessLib/SourceTerms/Python/CMakeLists.txt
@@ -1,32 +1,33 @@
 add_library(ProcessLibSourceTermPython
-    CreatePythonSourceTerm.cpp
-    CreatePythonSourceTerm.h
-    PythonSourceTerm.cpp
-    PythonSourceTerm.h
-    PythonSourceTermLocalAssembler.h
-    PythonSourceTermPythonSideInterface.h)
+            CreatePythonSourceTerm.cpp
+            CreatePythonSourceTerm.h
+            PythonSourceTerm.cpp
+            PythonSourceTerm.h
+            PythonSourceTermLocalAssembler.h
+            PythonSourceTermPythonSideInterface.h)
 if(BUILD_SHARED_LIBS)
     install(TARGETS ProcessLibSourceTermPython
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-target_compile_definitions(ProcessLibSourceTermPython
-    PUBLIC OGS_USE_PYTHON)
+target_compile_definitions(ProcessLibSourceTermPython PUBLIC OGS_USE_PYTHON)
 
 target_link_libraries(ProcessLibSourceTermPython
-    PUBLIC BaseLib MathLib MeshLib NumLib logog ${Python_LIBRARIES}
-    PRIVATE pybind11::pybind11)
+                      PUBLIC BaseLib
+                             MathLib
+                             MeshLib
+                             NumLib
+                             logog
+                             ${Python_LIBRARIES}
+                      PRIVATE pybind11::pybind11)
 
 # For the embedded Python module
-add_library(ProcessLibSourceTermPythonModule
-    PythonSourceTermModule.cpp
-    PythonSourceTermModule.h)
+add_library(ProcessLibSourceTermPythonModule PythonSourceTermModule.cpp
+                                             PythonSourceTermModule.h)
 if(BUILD_SHARED_LIBS)
     install(TARGETS ProcessLibSourceTermPythonModule
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
 target_link_libraries(ProcessLibSourceTermPythonModule
-    PUBLIC
-    ProcessLibSourceTermPython
-    pybind11::pybind11)
+                      PUBLIC ProcessLibSourceTermPython pybind11::pybind11)
diff --git a/ProcessLib/TES/CMakeLists.txt b/ProcessLib/TES/CMakeLists.txt
index afa13b23b39d63a90bac893c646546a2ac800bc0..4b8b5055bc81032f7a29a54b5fd7fb50fcdc8e19 100644
--- a/ProcessLib/TES/CMakeLists.txt
+++ b/ProcessLib/TES/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(TES ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS TES LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(TES
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(TES PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt
index 9f2c0e4977828c78953999dc6eccdd1fb578a089..6997808b17e64eaf29eba03944a6a68ada95b6cb 100644
--- a/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt
+++ b/ProcessLib/ThermalTwoPhaseFlowWithPP/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(ThermalTwoPhaseFlowWithPP ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS ThermalTwoPhaseFlowWithPP LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS ThermalTwoPhaseFlowWithPP
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(ThermalTwoPhaseFlowWithPP
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/ThermoHydroMechanics/CMakeLists.txt b/ProcessLib/ThermoHydroMechanics/CMakeLists.txt
index 4abb37657ef5fad3d72afe1842f0d6cf245b6822..358eb90407ba1664db5a80c9d07fcd85634e5df0 100644
--- a/ProcessLib/ThermoHydroMechanics/CMakeLists.txt
+++ b/ProcessLib/ThermoHydroMechanics/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(ThermoHydroMechanics ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS ThermoHydroMechanics LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS ThermoHydroMechanics
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(ThermoHydroMechanics
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt b/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt
index 9151b31a37f2f8e90ed9f7272605f2e23a1081b6..8f7777a8a7579d21cf385b91f0fb4613aaff4561 100644
--- a/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt
+++ b/ProcessLib/ThermoMechanicalPhaseField/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(ThermoMechanicalPhaseField ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS ThermoMechanicalPhaseField LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS ThermoMechanicalPhaseField
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(ThermoMechanicalPhaseField
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/ThermoMechanics/CMakeLists.txt b/ProcessLib/ThermoMechanics/CMakeLists.txt
index 7b4955907f37fca219756b148c24d119b568052a..d8996ec7f119b84e58efe1a6e9e8b96ed1bc2292 100644
--- a/ProcessLib/ThermoMechanics/CMakeLists.txt
+++ b/ProcessLib/ThermoMechanics/CMakeLists.txt
@@ -1,12 +1,9 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(ThermoMechanics ${SOURCES})
 if(BUILD_SHARED_LIBS)
     install(TARGETS ThermoMechanics LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(ThermoMechanics
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(ThermoMechanics PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt b/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt
index 8196b7acf38ea1d9dedaa5b6f25276dab5504b47..a3f041f974e07884ccf53ff40c0524ea9310bc99 100644
--- a/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt
+++ b/ProcessLib/TwoPhaseFlowWithPP/CMakeLists.txt
@@ -1,12 +1,10 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(TwoPhaseFlowWithPP ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS TwoPhaseFlowWithPP LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS TwoPhaseFlowWithPP
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
-target_link_libraries(TwoPhaseFlowWithPP
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+target_link_libraries(TwoPhaseFlowWithPP PUBLIC ProcessLib PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt
index ed415c5f7ddbaa20e1d0d60137db6ec0621570ea..f1e93ca98b1ece87372d85ff2268bc85fda3c433 100644
--- a/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt
+++ b/ProcessLib/TwoPhaseFlowWithPrho/CMakeLists.txt
@@ -1,12 +1,12 @@
-APPEND_SOURCE_FILES(SOURCES)
+append_source_files(SOURCES)
 
 add_library(TwoPhaseFlowWithPrho ${SOURCES})
 if(BUILD_SHARED_LIBS)
-    install(TARGETS TwoPhaseFlowWithPrho LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    install(TARGETS TwoPhaseFlowWithPrho
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 target_link_libraries(TwoPhaseFlowWithPrho
-    PUBLIC ProcessLib
-    PRIVATE ParameterLib
-)
+                      PUBLIC ProcessLib
+                      PRIVATE ParameterLib)
 
 include(Tests.cmake)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 64a699d341dde6ca9ba7814c53acac9153d2f21a..502ea4d5571a69a5937298d9949f4aeeb99b5885 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1,34 +1,34 @@
 include(${PROJECT_SOURCE_DIR}/scripts/cmake/OGSEnabledElements.cmake)
 
-# VS2012 doesn't support correctly the tuples yet
-# See http://code.google.com/p/googletest/issues/detail?id=412
+# VS2012 doesn't support correctly the tuples yet See
+# http://code.google.com/p/googletest/issues/detail?id=412
 if(MSVC)
     add_definitions(/D_VARIADIC_MAX=10)
 endif()
 
-APPEND_SOURCE_FILES(TEST_SOURCES)
-APPEND_SOURCE_FILES(TEST_SOURCES BaseLib)
-APPEND_SOURCE_FILES(TEST_SOURCES FileIO)
-APPEND_SOURCE_FILES(TEST_SOURCES GeoLib)
-APPEND_SOURCE_FILES(TEST_SOURCES GeoLib/IO)
-APPEND_SOURCE_FILES(TEST_SOURCES MaterialLib)
-APPEND_SOURCE_FILES(TEST_SOURCES MathLib)
-APPEND_SOURCE_FILES(TEST_SOURCES MeshLib)
-APPEND_SOURCE_FILES(TEST_SOURCES MeshGeoToolsLib)
-APPEND_SOURCE_FILES(TEST_SOURCES NumLib)
-APPEND_SOURCE_FILES(TEST_SOURCES ParameterLib)
-APPEND_SOURCE_FILES(TEST_SOURCES ProcessLib)
+append_source_files(TEST_SOURCES)
+append_source_files(TEST_SOURCES BaseLib)
+append_source_files(TEST_SOURCES FileIO)
+append_source_files(TEST_SOURCES GeoLib)
+append_source_files(TEST_SOURCES GeoLib/IO)
+append_source_files(TEST_SOURCES MaterialLib)
+append_source_files(TEST_SOURCES MathLib)
+append_source_files(TEST_SOURCES MeshLib)
+append_source_files(TEST_SOURCES MeshGeoToolsLib)
+append_source_files(TEST_SOURCES NumLib)
+append_source_files(TEST_SOURCES ParameterLib)
+append_source_files(TEST_SOURCES ProcessLib)
 
 if(OGS_BUILD_GUI)
-    APPEND_SOURCE_FILES(TEST_SOURCES FileIO_Qt)
+    append_source_files(TEST_SOURCES FileIO_Qt)
 endif()
 
 if(OGS_BUILD_SWMM)
-    APPEND_SOURCE_FILES(TEST_SOURCES FileIO_SWMM)
+    append_source_files(TEST_SOURCES FileIO_SWMM)
 endif()
 
 if(OGS_BUILD_PROCESS_LIE)
-    APPEND_SOURCE_FILES(TEST_SOURCES ProcessLib/LIE)
+    append_source_files(TEST_SOURCES ProcessLib/LIE)
 endif()
 
 if(OGS_USE_PETSC)
@@ -39,17 +39,16 @@ add_executable(testrunner ${TEST_SOURCES})
 set_target_properties(testrunner PROPERTIES FOLDER Testing)
 
 target_link_libraries(testrunner
-    ApplicationsFileIO
-    gtest
-    MeshGeoToolsLib
-    MaterialLib
-    MeshLib
-    NumLib
-    ParameterLib
-    ProcessLib
-    Threads::Threads
-    ${VTK_LIBRARIES}
-)
+                      ApplicationsFileIO
+                      gtest
+                      MeshGeoToolsLib
+                      MaterialLib
+                      MeshLib
+                      NumLib
+                      ParameterLib
+                      ProcessLib
+                      Threads::Threads
+                      ${VTK_LIBRARIES})
 
 if(OGS_BUILD_PROCESS_LIE)
     target_link_libraries(testrunner LIE)
@@ -72,7 +71,13 @@ if(OGS_INSITU)
 endif()
 
 if(OGS_BUILD_GUI)
-    target_link_libraries(testrunner Qt5::Core Qt5::Gui Qt5::Xml Qt5::Network VtkVis QtDataView)
+    target_link_libraries(testrunner
+                          Qt5::Core
+                          Qt5::Gui
+                          Qt5::Xml
+                          Qt5::Network
+                          VtkVis
+                          QtDataView)
     if(GEOTIFF_FOUND)
         target_link_libraries(testrunner ${GEOTIFF_LIBRARIES})
     endif()
@@ -82,6 +87,7 @@ if(OGS_USE_PCH)
     cotire(testrunner)
 endif()
 
+# cmake-format: off
 # Add make-target tests which runs the testrunner
 if(IS_CI AND NOT OGS_COVERAGE)
     set(TESTRUNNER_ADDITIONAL_ARGUMENTS ${TESTRUNNER_ADDITIONAL_ARGUMENTS}
@@ -114,8 +120,11 @@ else()
         DEPENDS testrunner tests-cleanup
     )
 endif()
+# cmake-format: on
 
 set_target_properties(tests PROPERTIES FOLDER Testing)
 
 # Creates one ctest entry for every googletest
-#ADD_GOOGLE_TESTS ( ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/testrunner ${TEST_SOURCES})
+# ~~~
+# ADD_GOOGLE_TESTS (${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/testrunner ${TEST_SOURCES})
+# ~~~
diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake
index 641699222ff14ab79967ec24667c58f4f4c3d916..ac9e2da4aa2991205dfd3af8c03d5145c33ad4fe 100644
--- a/scripts/cmake/CompilerSetup.cmake
+++ b/scripts/cmake/CompilerSetup.cmake
@@ -3,8 +3,8 @@ set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
-# < VS 15.0; macOS: https://github.com/sakra/cotire/issues/139
-if(MSVC_VERSION LESS 1910 OR APPLE OR ${CMAKE_CXX_COMPILER} MATCHES "clcache")
+# macOS: https://github.com/sakra/cotire/issues/139
+if(APPLE OR ${CMAKE_CXX_COMPILER} MATCHES "clcache")
     set(OGS_USE_PCH OFF CACHE INTERNAL "")
 endif()
 if(OGS_USE_PCH)
diff --git a/scripts/docker/Dockerfile.clang.full b/scripts/docker/Dockerfile.clang.full
index c2dd455a821df7a6062b0d7b6018d3008fda889f..03bee48e03080060912a427a0ca8033facfd860d 100644
--- a/scripts/docker/Dockerfile.clang.full
+++ b/scripts/docker/Dockerfile.clang.full
@@ -39,7 +39,7 @@ RUN apt-get update -y && \
         python3-setuptools \
         python3-wheel && \
     rm -rf /var/lib/apt/lists/*
-RUN pip3 install virtualenv pre-commit
+RUN pip3 install virtualenv pre-commit cmake-format
 # CMake version 3.12.4
 RUN apt-get update -y && \
     DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
diff --git a/scripts/docker/Dockerfile.gcc.full b/scripts/docker/Dockerfile.gcc.full
index d02dbc53cb060454b05bce3ab5a4d30f28d7d063..efd77f6c985d5d5a217f89f66e0d7d6b1e55882c 100644
--- a/scripts/docker/Dockerfile.gcc.full
+++ b/scripts/docker/Dockerfile.gcc.full
@@ -32,7 +32,7 @@ RUN apt-get update -y && \
         python3-setuptools \
         python3-wheel && \
     rm -rf /var/lib/apt/lists/*
-RUN pip3 install virtualenv pre-commit
+RUN pip3 install virtualenv pre-commit cmake-format
 # CMake version 3.12.4
 RUN apt-get update -y && \
     DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
diff --git a/scripts/docker/Dockerfile.gcc.gui b/scripts/docker/Dockerfile.gcc.gui
index f40c63b2dc733179eb59d7a0771c352834971888..ab968209ec43826d23ff84cdff6c0cb25b39e43c 100644
--- a/scripts/docker/Dockerfile.gcc.gui
+++ b/scripts/docker/Dockerfile.gcc.gui
@@ -32,7 +32,7 @@ RUN apt-get update -y && \
         python3-setuptools \
         python3-wheel && \
     rm -rf /var/lib/apt/lists/*
-RUN pip3 install virtualenv pre-commit
+RUN pip3 install virtualenv pre-commit cmake-format
 # CMake version 3.12.4
 RUN apt-get update -y && \
     DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
diff --git a/scripts/hooks/pre-commit-cmake-format.sh b/scripts/hooks/pre-commit-cmake-format.sh
new file mode 100755
index 0000000000000000000000000000000000000000..785a6cb5b6a1d5c64fe413895fd17d039aaa9dec
--- /dev/null
+++ b/scripts/hooks/pre-commit-cmake-format.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+EXE=$(command -v cmake-format)
+if [ -z "$EXE" ]; then
+    echo "cmake-format not found; skipping check."
+    exit 0
+fi
+
+
+MOD_FILES=""
+
+MOD_FILES=()
+for FILE in "$@"
+do
+    cmake-format -i "$FILE"
+    MODIFIED=$(git status --porcelain "$FILE" | head -c 2 | tail -c 1)
+    # echo $FILE: $MODIFIED
+    if [ "$MODIFIED" = "M" ]; then
+        MOD_FILES+=("$FILE")
+        echo "Fixed $FILE"
+    fi
+done
+
+if [ -z "$MOD_FILES" ]; then
+    exit 0
+fi
+
+echo "CMake files have been modified."
+echo "Add them to the commit!"
+exit 1
diff --git a/scripts/hooks/pre-commit-git-lfs.sh b/scripts/hooks/pre-commit-git-lfs.sh
index 820f73e2250b5e6067fb38bdf434c8b04d6212ca..cd6397eaad97c33afc40e018e6c261bf15595fb7 100755
--- a/scripts/hooks/pre-commit-git-lfs.sh
+++ b/scripts/hooks/pre-commit-git-lfs.sh
@@ -1,14 +1,11 @@
 #!/usr/bin/env bash
 
-set -e
-
 BINARY_FILES=""
 LFS_FILES=""
 
 LFS_FILES=()
 for FILE in "$@"
 do
-    echo FILE: $FILE
     LFS_FILE=$(git check-attr filter "$FILE" | grep 'filter: lfs$' | sed -e 's/: filter: lfs//')
     if [ ! -z "$LFS_FILE" ]; then
         LFS_FILES+=("$LFS_FILE")
diff --git a/web/content/_index.pandoc b/web/content/_index.pandoc
index 250ab37d8ea42879dedad26ba8b7f9d648b370f8..4b1512d2f1c099f0e74d40351175041c3f374a01 100644
--- a/web/content/_index.pandoc
+++ b/web/content/_index.pandoc
@@ -131,7 +131,7 @@ features:
           url: /docs/devguide
     - headline: Become part of the Community
       textline: |
-        Get in touch with the OpenGeoSys Community via the [Mailing List](https://groups.google.com/forum/#!forum/ogs-users), [GitHub](https://github.com/ufz/ogs) or by [email](mailto:info@opengeosys.org).
+        Get in touch with the OpenGeoSys Community via our [Discussion forum](https://discourse.opengeosys.org), [GitHub](https://github.com/ufz/ogs) or by [email](mailto:info@opengeosys.org).
       links:
         - text: <i class="fab fa-github"></i> GitHub
           url: https://github.com/ufz/ogs
diff --git a/web/content/docs/_index.pandoc b/web/content/docs/_index.pandoc
index 8f53309114f007c8bc551a257cfffb4f54abf4c3..55b2439dd226efd36c98e5db53d52e0c520054ac 100644
--- a/web/content/docs/_index.pandoc
+++ b/web/content/docs/_index.pandoc
@@ -43,10 +43,4 @@ url = "https://ufz.github.io/styleguide/cppguide.xml"
 text = "OpenGeoSys C++ Style Guide"
 icon = "fal fa-file-check"
 
-[[sections]]
-name = "Mailing List"
-url = "https://groups.google.com/forum/#!forum/ogs-users"
-text = "The mailing lists for OpenGeoSys users and developers are a good place to ask question related to anything OGS."
-icon = "fal fa-mail-bulk"
-
 +++
diff --git a/web/content/docs/devguide/getting-started/git-installer-win.png b/web/content/docs/devguide/getting-started/git-installer-win.png
new file mode 100644
index 0000000000000000000000000000000000000000..07bb024e09b9b1620f21e8bd1e70a62ce0d23738
--- /dev/null
+++ b/web/content/docs/devguide/getting-started/git-installer-win.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27e4af52979d627bed13efd2d22430813c5e61ee7b370afdc299087267bd0102
+size 20598
diff --git a/web/content/docs/devguide/getting-started/prerequisites.pandoc b/web/content/docs/devguide/getting-started/prerequisites.pandoc
index cbd3fcd67a5612fb2a1180c0e8a365f2324ada6c..02aef8f11c101c244918c5452ae2c7882c5b40c0 100644
--- a/web/content/docs/devguide/getting-started/prerequisites.pandoc
+++ b/web/content/docs/devguide/getting-started/prerequisites.pandoc
@@ -63,7 +63,11 @@ The Homebrew package manager is needed for installing other libraries and packag
 Git is a powerful and distributed version control system. OGS source code is hosted on [GitHub](https://github.com/ufz/ogs). See the developer guide page on [Code Reviews]({{< ref "code-reviews" >}}) for more info on how OGS uses GitHub for collaborative development.
 
 ::: {.win}
-Download and install git from the [git homepage](http://git-scm.com/download/win). The default installer options are fine. This install a new command line called *Git Bash* which should be used for all git operations.
+Download and install git from the [git homepage](http://git-scm.com/download/win). Use the default installer options but also enable `Enable symbolic links` under the *Configuring extra options* page.
+
+![Enable symbolic links option](../git-installer-win.png)
+
+This install a new command line called *Git Bash* which should be used for all git operations.
 
 Let Git know who you are:
 
@@ -241,7 +245,7 @@ Install Conan with Python's pip:
 pip3 install --user conan
 ```
 
-This installed `conan` to `.local/bin` in your home directory. Make sure to have this directory in your `PATH`!
+This installed `conan` to `.local/bin` (or `C:\Users\[username]\AppData\Roaming\Python\Python37\Scripts` on Windows) in your home directory. Make sure to have this directory in your `PATH`!
 
 Check on a newly opened command line if Conan was installed successfully:
 
diff --git a/web/content/ogs-5/index.pandoc b/web/content/ogs-5/index.pandoc
index 7b5a6f0fa37f8990ab41f472bffbf9c48338f9b0..23a19f54c197b2f5c3a558c87faa25ad2766f5c8 100644
--- a/web/content/ogs-5/index.pandoc
+++ b/web/content/ogs-5/index.pandoc
@@ -5,7 +5,7 @@ aliases = [ "/download5/",           # Redirect for Hydrology II tutorial
             "/resources/downloads" ] # Redirect for Hydrology I tutorial
 +++
 
-As OGS-6 is a reimplementation of OGS-5 with new concepts and methodologies there will probably never be complete feature parity. We provide binaries of OpenGeoSys-5 ready for you to use. Support is limited but you may ask questions or report bugs via the [ogs-users](https://groups.google.com/forum/#!forum/ogs-users) mailing list.
+As OGS-6 is a reimplementation of OGS-5 with new concepts and methodologies there will probably never be complete feature parity. We provide binaries of OpenGeoSys-5 ready for you to use. Support is limited but you may ask questions or report bugs via our [discussion forum](https://discourse.opengeosys.org/tags/ogs5) mailing list.
 
 ## Downloads