diff --git a/cmake/modules/DunePerftoolMacros.cmake b/cmake/modules/DunePerftoolMacros.cmake
index f64ba56bb5380ba4e03737069d808cad0ebade41..474a600036ac26ef6958a6aedd7bbea1c158918b 100644
--- a/cmake/modules/DunePerftoolMacros.cmake
+++ b/cmake/modules/DunePerftoolMacros.cmake
@@ -42,6 +42,13 @@
 #    Regeneration is triggered correctly if the UFL file or the
 #    form compiler changed.
 #
+# .. cmake_variable:: UFL2PDELAB_INTERACTIVE
+#
+#    If this variable is set, all code generation will be done in
+#    interactive mode. This option is interesting in development
+#    of the form compiler, but might be quite tedious in production
+#    and automated testing.
+#
 
 add_custom_target(generation)
 
@@ -93,6 +100,9 @@ function(add_generated_executable)
     string(REPLACE "/" "_" GEN_MAIN ${GEN_MAIN})
     set(GEN_MAIN ${CMAKE_CURRENT_BINARY_DIR}/${GEN_MAIN})
   endif()
+  if(UFL2PDELAB_INTERACTIVE)
+    set(GEN_FORM_COMPILER_ARGS ${GEN_FORM_COMPILER_ARGS} --interactive)
+  endif()
 
   # Write a standard main function
   configure_file(${CMAKE_SOURCE_DIR}/cmake/modules/StandardMain.cmake ${GEN_MAIN})