diff --git a/src/Index.cmake b/src/Index.cmake
index 2fb6384137cb2a88cb5ab4fdeeb929234e334f71..caa2cfba697669e67b34a5d385b25aa3780f7853 100644
--- a/src/Index.cmake
+++ b/src/Index.cmake
@@ -9,19 +9,26 @@ include (${CMAKE_CURRENT_LIST_DIR}/InitProject.cmake)
 set(CPM_DOWNLOAD_VERSION 0.40.5)
 file (GLOB CPM_MODULE_LOCATIONS ${CMAKE_BINARY_DIR}/cmake/CPM*.cmake)
 
-# get the version from the last element in the list
-list (GET CPM_MODULE_LOCATIONS -1 CPM_MODULE_LOCATION)
-string (REGEX REPLACE ".*CPM_([0-9]+\\.[0-9]+\\.[0-9]+)\\.cmake" "\\1" CPM_MODULE_VERSION ${CPM_MODULE_LOCATION})
+set(CPM_NEEDS_DOWNLOAD FALSE)
 
-if (NOT CPM_MODULE_LOCATIONS OR CPM_MODULE_VERSION VERSION_LESS CPM_DOWNLOAD_VERSION)
+if (NOT CPM_MODULE_LOCATIONS)
+	set (CPM_NEEDS_DOWNLOAD TRUE)
+else ()
+	list (GET CPM_MODULE_LOCATIONS -1 CPM_MODULE_LOCATION)
+	string (REGEX REPLACE ".*CPM_([0-9]+\\.[0-9]+\\.[0-9]+)\\.cmake" "\\1" CPM_MODULE_VERSION ${CPM_MODULE_LOCATION})
+
+	if (CPM_MODULE_VERSION VERSION_LESS CPM_DOWNLOAD_VERSION)
+		set (CPM_NEEDS_DOWNLOAD TRUE)
+	endif ()
+endif ()
+
+if (CPM_NEEDS_DOWNLOAD)
 	set (CPM_MODULE_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
 
 	message (STATUS "Downloading CPM.cmake")
 	file (DOWNLOAD https://github.com/TheLartians/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
 		  ${CPM_MODULE_LOCATION}
 	)
-else ()
-	list (GET CPM_MODULE_LOCATIONS -1 CPM_MODULE_LOCATION)
 endif ()
 
 include (${CPM_MODULE_LOCATION})