diff --git a/CMakeLists.txt b/CMakeLists.txt
index 45a6aa1b5..1885dee67 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,7 +48,12 @@ message(STATUS "CMake version ${CMAKE_VERSION}")
 
 project(monero)
 
-include(FindCcache) # Has to be included after the project() macro, to be able to read the CXX variable.
+option (USE_CCACHE "Use ccache if a usable instance is found" ON)
+if (USE_CCACHE)
+	include(FindCcache) # Has to be included after the project() macro, to be able to read the CXX variable.
+else()
+	message(STATUS "ccache deselected")
+endif()
 
 enable_language(C ASM)
 
diff --git a/cmake/FindCcache.cmake b/cmake/FindCcache.cmake
index fa357610b..a0734a312 100644
--- a/cmake/FindCcache.cmake
+++ b/cmake/FindCcache.cmake
@@ -41,17 +41,20 @@
 
 find_program(CCACHE_FOUND ccache)
 if (CCACHE_FOUND)
-	set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp")
+	# Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups)
+	# Create a temporary file with a simple program.
+	set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp")
 	file(WRITE "${TEMP_CPP_FILE}" "int main() { return 0; }")
+	# And run the found ccache on it.
 	execute_process(COMMAND "${CCACHE_FOUND}" "${CMAKE_CXX_COMPILER}" "${TEMP_CPP_FILE}"  RESULT_VARIABLE RET)
 	if (${RET} EQUAL 0)
-		message("found usable ccache: ${CCACHE_FOUND}")
+		# Success
+		message(STATUS "Found usable ccache: ${CCACHE_FOUND}")
 		set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")
 		set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK    "${CCACHE_FOUND}")
 	else()
-		message("found ccache ${CCACHE_FOUND}, but is UNUSABLE! Return code: ${RET}")
-	endif()	    	
+		message(STATUS "Found ccache ${CCACHE_FOUND}, but is UNUSABLE! Return code: ${RET}")
+	endif()
 else()
-	message("ccache NOT found!")
+	message(STATUS "ccache NOT found! Please install it for faster rebuilds.")
 endif()
-