From 9e56a186c3c467c8807f077e8bb3beba0fffd6c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Sat, 10 Mar 2018 23:40:27 +0100
Subject: [PATCH] Prevent compilation in source dir. Only allows compilation is
 top-src-dir/build

---
 .gitignore     |  2 ++
 CMakeLists.txt | 27 ++++++++++++++++++++++++++-
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 5975d974f..ced9e610d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 *~
 build/
+CMakeFiles/
+CMakeCache.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bdb43ba5e..d303c5886 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)
-- 
GitLab