diff --git a/.gitignore b/.gitignore
index 5975d974f7be40309ab8e2ff320455cb9cccf0c9..ced9e610df1c7302a6aa85fa2e89e1f5a146c836 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 *~
 build/
+CMakeFiles/
+CMakeCache.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bdb43ba5ef6188a734bc945276a30d78914625e5..d303c58865c77eaaa4873a7f4a4a09cfcbf1985e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,28 @@
-cmake_minimum_required (VERSION 2.6)
+cmake_minimum_required (VERSION 3.4)
+
+if (${CMAKE_BINARY_DIR} MATCHES "^${CMAKE_SOURCE_DIR}")
+  if (NOT ${CMAKE_BINARY_DIR} MATCHES "^${CMAKE_SOURCE_DIR}/build")
+    message("")
+    message("##############################################")
+    message("     In-source building is not allowed!       ")
+    message("##############################################")
+    message("")
+    message(" Run cmake outside from source directory ")
+    message(" or from ${CMAKE_SOURCE_DIR}/build")
+    message("")
+    message("----------------------------------------------")
+    message(" warning: remaining generated files!")
+    message("   ${CMAKE_BINARY_DIR}/CMakeCache.txt")
+    message("   ${CMAKE_BINARY_DIR}/CMakeFiles")
+    message("----------------------------------------------")
+    message("")
+    message(" Please remove remaining generated files ")
+    message(" and run cmake from an appropriate location")
+    message("")
+
+    message(FATAL_ERROR  "\n** CMake aborted **")
+  endif()
+endif()
+
 project (Pastis)
 add_executable(pastis main.cpp)