diff --git a/cmake/modules/Headercheck.cmake b/cmake/modules/Headercheck.cmake
index aed1df31d19f99a39ecf65d196dd97f98abe9b26..873b35189c738075e3c0483463fac3a3bef67d90 100644
--- a/cmake/modules/Headercheck.cmake
+++ b/cmake/modules/Headercheck.cmake
@@ -1,15 +1,17 @@
 # sets up a global property with the names of all header files
 # in the module and a global target depending on all checks
 macro(setup_headercheck)
-  #glob for headers
-  file(GLOB_RECURSE all_headers "*.hh")
-  # strip hidden files
-  string(REGEX REPLACE "[^;]*/\\.[^;]*\\.hh;?" "" headers "${all_headers}")
-  set_property(GLOBAL PROPERTY headercheck_list ${headers})
+  if(ENABLE_HEADERCHECK)
+    #glob for headers
+    file(GLOB_RECURSE all_headers "*.hh")
+    # strip hidden files
+    string(REGEX REPLACE "[^;]*/\\.[^;]*\\.hh;?" "" headers "${all_headers}")
+    set_property(GLOBAL PROPERTY headercheck_list ${headers})
+  endif()
 
   #define headercheck target
   dune_common_script_dir(SCRIPT_DIR)
-  add_custom_target(headercheck ${CMAKE_COMMAND} -P ${SCRIPT_DIR}/FinalizeHeadercheck.cmake
+  add_custom_target(headercheck ${CMAKE_COMMAND} -P ${SCRIPT_DIR}/FinalizeHeadercheck.cmake -DENABLE_HEADERCHECK=${ENABLE_HEADERCHECK}
                   WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
 endmacro(setup_headercheck)
 
@@ -44,29 +46,31 @@ endmacro(exclude_all_but_from_headercheck)
 
 # configure all headerchecks
 macro(finalize_headercheck)
-  get_property(headerlist GLOBAL PROPERTY headercheck_list)
-  foreach(header ${headerlist})
-    #do some name conversion
-    string(REGEX REPLACE ".*/([^/]*)" "\\1" simple ${header})
-    string(REPLACE ${PROJECT_SOURCE_DIR} "" rel ${header})
-    string(REGEX REPLACE "(.*)/[^/]*" "\\1" relpath ${rel})
-    string(REGEX REPLACE "/" "_" targname ${rel})
+  if(ENABLE_HEADERCHECK)
+    get_property(headerlist GLOBAL PROPERTY headercheck_list)
+    foreach(header ${headerlist})
+      #do some name conversion
+      string(REGEX REPLACE ".*/([^/]*)" "\\1" simple ${header})
+      string(REPLACE ${PROJECT_SOURCE_DIR} "" rel ${header})
+      string(REGEX REPLACE "(.*)/[^/]*" "\\1" relpath ${rel})
+      string(REGEX REPLACE "/" "_" targname ${rel})
 
-    #generate the headercheck .cc file
-    file(WRITE ${CMAKE_BINARY_DIR}/headercheck/${rel}.cc "#ifdef HAVE_CONFIG_H\n#include<config.h>\n#endif\n#include<${simple}>\n#include<${simple}>\nint main(){return 0;}")
+      #generate the headercheck .cc file
+      file(WRITE ${CMAKE_BINARY_DIR}/headercheck/${rel}.cc "#ifdef HAVE_CONFIG_H\n#include<config.h>\n#endif\n#include<${simple}>\n#include<${simple}>\nint main(){return 0;}")
 
-    # add target for the check of current header, this is implemented as a library
-    # to prevent CMake from automatically trying to link the target, functionality
-    # of macro try_compile() is unfortunately not availbale due to it not being scriptable.
-    add_library(headercheck_${targname} STATIC EXCLUDE_FROM_ALL
-      ${CMAKE_BINARY_DIR}/headercheck/${rel}.cc)
-    add_dependencies(headercheck headercheck_${targname})
+      # add target for the check of current header, this is implemented as a library
+      # to prevent CMake from automatically trying to link the target, functionality
+      # of macro try_compile() is unfortunately not availbale due to it not being scriptable.
+      add_library(headercheck_${targname} STATIC EXCLUDE_FROM_ALL
+        ${CMAKE_BINARY_DIR}/headercheck/${rel}.cc)
+      add_dependencies(headercheck headercheck_${targname})
 
-    #add PKG_ALL_FLAGS and the directory where the header is located
-    set_property(TARGET headercheck_${targname}
-      APPEND_STRING PROPERTY COMPILE_FLAGS "-DHEADERCHECK -I${PROJECT_SOURCE_DIR}${relpath} -I${CMAKE_BINARY_DIR}")
-    set_property(TARGET headercheck_${targname} PROPERTY ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/headercheck/${relpath}")
-    add_dune_all_flags(headercheck_${targname})
-    unset(headercheck_${targname}_LIB_DEPENDS CACHE)
-  endforeach(header ${headerlist})
+      #add PKG_ALL_FLAGS and the directory where the header is located
+      set_property(TARGET headercheck_${targname}
+        APPEND_STRING PROPERTY COMPILE_FLAGS "-DHEADERCHECK -I${PROJECT_SOURCE_DIR}${relpath} -I${CMAKE_BINARY_DIR}")
+      set_property(TARGET headercheck_${targname} PROPERTY ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/headercheck/${relpath}")
+      add_dune_all_flags(headercheck_${targname})
+      unset(headercheck_${targname}_LIB_DEPENDS CACHE)
+    endforeach(header ${headerlist})
+  endif()
 endmacro(finalize_headercheck)
diff --git a/cmake/scripts/FinalizeHeadercheck.cmake b/cmake/scripts/FinalizeHeadercheck.cmake
index 50770ceb6e87faa8816d481cdabda81fe20b7fec..a6fdafcbbc70d08cbc1e81c9e3609994c1ee47cd 100644
--- a/cmake/scripts/FinalizeHeadercheck.cmake
+++ b/cmake/scripts/FinalizeHeadercheck.cmake
@@ -1,5 +1,9 @@
 # this is script is called at the end of all header checks
-message("Headerchecks finished! Rerun CMake if a new file has not been checked!")
+if(ENABLE_HEADERCHECK)
+  message("Headerchecks finished! Rerun CMake if a new file has not been checked!")
+else()
+  message("The headercheck feature is currently disabled. You can enable it by adding ENABLE_HEADERCHECK=1 to your cmake flags.")
+endif()
 
 #message("Running make clean on headercheck targets...")
 #this cleans the build directory from pollution through headerchecks but prevents caching... :/