diff --git a/example/CMakeProject/ALL_Staggered.cpp b/example/CMakeProject/ALL_Staggered.cpp
new file mode 120000
index 0000000000000000000000000000000000000000..8bca7c2bfb9323f5e40ba4b3d616cf451accc289
--- /dev/null
+++ b/example/CMakeProject/ALL_Staggered.cpp
@@ -0,0 +1 @@
+../ALL_Staggered.cpp
\ No newline at end of file
diff --git a/example/CMakeProject/ALL_Staggered_f.F90 b/example/CMakeProject/ALL_Staggered_f.F90
new file mode 120000
index 0000000000000000000000000000000000000000..824e45ef989b09920cc0a5660a3403b88361d251
--- /dev/null
+++ b/example/CMakeProject/ALL_Staggered_f.F90
@@ -0,0 +1 @@
+../ALL_Staggered_f.F90
\ No newline at end of file
diff --git a/example/CMakeProject/CMakeLists.txt b/example/CMakeProject/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3640e5738bf4a4f6e7283761d36c10df249bcfbf
--- /dev/null
+++ b/example/CMakeProject/CMakeLists.txt
@@ -0,0 +1,24 @@
+# REMEMBER TO SET CC AND CXX! CMake is too dumb to find compiler in your path!
+# mkdcd build
+# CC=gcc CXX=g++ cmake -DALL_DIR=`pwd`/../../jall_bin/lib/cmake/ALL ../
+
+cmake_minimum_required(VERSION 3.14)
+project(ALL_Staggered)
+
+enable_language(CXX)
+enable_language(Fortran)
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+find_package(MPI REQUIRED COMPONENTS CXX Fortran)
+find_package(ALL 0.9.1)
+
+add_executable(ALL_Staggered ALL_Staggered.cpp)
+target_link_libraries(ALL_Staggered PRIVATE ALL::ALL)
+
+add_executable(ALL_Staggered_f ALL_Staggered_f.F90)
+target_link_libraries(ALL_Staggered_f LINK_PRIVATE ALL::ALL)
+target_link_libraries(ALL_Staggered_f LINK_PRIVATE ALL::ALL_fortran)
+set_property(TARGET ALL_Staggered_f PROPERTY LINKER_LANGUAGE Fortran)
+#todo(s.schulz): link against MPI
diff --git a/example/CMakeProject/build_all.sh b/example/CMakeProject/build_all.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e059c34dbdfbb41b864c211022667654703c95f3
--- /dev/null
+++ b/example/CMakeProject/build_all.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# all commands must execute successfully
+set -e
+set -o pipefail
+set -u
+set -x
+
+# $ALL_INSTALL_DIR must be an absolute path!
+ALL_ROOT_DIR=../..
+ALL_BUILD_DIR=all_build
+ALL_INSTALL_DIR=`pwd`/all_bin
+BUILD_DIR=build
+
+export CC=gcc
+export CXX=g++
+
+build_all () {
+	rm -rf "$ALL_BUILD_DIR"
+	mkdir "$ALL_BUILD_DIR"
+	cmake -S "$ALL_ROOT_DIR" -B "$ALL_BUILD_DIR"\
+		-DCMAKE_INSTALL_PREFIX="$ALL_INSTALL_DIR"\
+		-DCM_ALL_FORTRAN=ON\
+		-DCMAKE_BUILD_TYPE=Release
+
+	cmake --build "$ALL_BUILD_DIR"
+	rm -rf "ALL_INSTALL_DIR"
+	cmake --install "$ALL_BUILD_DIR"
+}
+
+build_self () {
+	rm -rf "$BUILD_DIR"
+	mkdir "$BUILD_DIR"
+	cmake -S . -B "$BUILD_DIR"\
+		-DALL_DIR="$ALL_INSTALL_DIR"/lib/cmake/ALL
+
+	cmake --build "$BUILD_DIR"
+}
+
+build_all
+build_self
diff --git a/example/CMakeProject/build_all_relocated.sh b/example/CMakeProject/build_all_relocated.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b5dc3c5ce09d39c78bdea2f8fc7ea335c65e0034
--- /dev/null
+++ b/example/CMakeProject/build_all_relocated.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+# all commands must execute successfully
+set -e
+set -o pipefail
+set -u
+set -x
+
+# $ALL_INSTALL_DIR must be an absolute path!
+ALL_ROOT_DIR=../..
+ALL_BUILD_DIR=all_build
+ALL_INSTALL_DIR=`pwd`/all_bin
+ALL_INSTALL_DIR2=`pwd`/all_bin2
+BUILD_DIR=build
+
+export CC=gcc
+export CXX=g++
+
+build_all () {
+	rm -rf "$ALL_BUILD_DIR"
+	mkdir "$ALL_BUILD_DIR"
+	cmake -S "$ALL_ROOT_DIR" -B "$ALL_BUILD_DIR"\
+		-DCMAKE_INSTALL_PREFIX="$ALL_INSTALL_DIR"\
+		-DCM_ALL_FORTRAN=ON\
+		-DCMAKE_BUILD_TYPE=Release
+
+	cmake --build "$ALL_BUILD_DIR"
+	rm -rf "ALL_INSTALL_DIR"
+	cmake --install "$ALL_BUILD_DIR"
+	mv "$ALL_INSTALL_DIR" "$ALL_INSTALL_DIR2"
+}
+
+build_self () {
+	rm -rf "$BUILD_DIR"
+	mkdir "$BUILD_DIR"
+	cmake -S . -B "$BUILD_DIR"\
+		-DALL_DIR="$ALL_INSTALL_DIR2"/lib/cmake/ALL
+
+	cmake --build "$BUILD_DIR"
+}
+
+build_all
+build_self