diff --git a/ci/ci_funcs.sh b/ci/ci_funcs.sh
index 81dce181217a31a5ce5f54f472ee055588370c78..01776459d731ca27ee07139a6908c5d51216f6e8 100644
--- a/ci/ci_funcs.sh
+++ b/ci/ci_funcs.sh
@@ -35,6 +35,16 @@ function load_MPI {
     echo "load MPI libs"
 }
 
+function find_ALL {
+	ALL_ROOT_DIR="$CI_SCRIPT_PATH/.."
+}
+
+function find_VTK {
+	# todo(s.schulz): This must be adapted for docker images! Right now this
+	# is only correct on my own machine.
+	VTK_DIR="$CI_SCRIPT_PATH/../../vtk_bin"
+}
+
 # push badge to tmp-branch and exit
 function pushbadge_exit {
     local CP_FILE=$1
diff --git a/ci/test_project_cmake.sh b/ci/test_project_cmake.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3f61c20bf7fe7ba8550b5197d3e4292fa5cbc4eb
--- /dev/null
+++ b/ci/test_project_cmake.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+SCRIPT_DIR="$(cd "$(dirname "$0")"; pwd -P)"
+source $SCRIPT_DIR/ci_funcs.sh
+set -euxo pipefail
+
+find_ALL #sets ALL_ROOT_DIR
+find_VTK #sets VTK_DIR
+
+TEMP=$(mktemp -d)
+
+rsync -aLK ../example/CMakeProject/ "$TEMP"
+cd "$TEMP"
+sed -i\
+	-e "/^ALL_ROOT_DIR=/c\\\nALL_ROOT_DIR=\"$ALL_ROOT_DIR\"\n"\
+	-e "/^VTK_DIR=/c\\\nVTK_DIR=\"$VTK_DIR\"\n"\
+	build_all.sh
+cat build_all.sh
+./build_all.sh
+
+
+rm -rf "$TEMP"
diff --git a/ci/test_project_cmake_subdir.sh b/ci/test_project_cmake_subdir.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bdab524f5dc932a73dcb089d3ef2bfe7c9060ab1
--- /dev/null
+++ b/ci/test_project_cmake_subdir.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+SCRIPT_DIR="$(cd "$(dirname "$0")"; pwd -P)"
+source $SCRIPT_DIR/ci_funcs.sh
+set -euxo pipefail
+
+find_ALL #sets ALL_ROOT_DIR
+find_VTK #sets VTK_DIR
+
+TEMP=$(mktemp -d)
+
+rsync -aLK ../example/CMakeProjectSubdir/ "$TEMP"
+cd "$TEMP"
+ln -s "$ALL_ROOT_DIR" all
+ln -s "$VTK_DIR" vtk_bin
+./build_all.sh
+
+
+rm -rf "$TEMP"
diff --git a/ci/test_project_makefile.sh b/ci/test_project_makefile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d89ef08b11e79fde1ca9523e3cbedb743a8ea0c0
--- /dev/null
+++ b/ci/test_project_makefile.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+SCRIPT_DIR="$(cd "$(dirname "$0")"; pwd -P)"
+source $SCRIPT_DIR/ci_funcs.sh
+set -euxo pipefail
+
+find_ALL #sets ALL_ROOT_DIR
+find_VTK #sets VTK_DIR
+
+TEMP=$(mktemp -d)
+
+rsync -aLK ../example/MakefileProject/ "$TEMP"
+cd "$TEMP"
+sed -i\
+	-e "/^ALL_SOURCE=/c\\\nALL_SOURCE=\"$ALL_ROOT_DIR\"\n"\
+	-e "/^VTK_DIR=/c\\\nVTK_DIR=\"$VTK_DIR\"\n"\
+	Makefile
+cat Makefile
+make
+
+
+rm -rf "$TEMP"