diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3486f05..b8c2e63 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -191,68 +191,14 @@ if(WITH_CUDA)
 	ENDIF(${CUDA_FOUND})
 endif()
 
-find_package(BLAS)
-find_package(LAPACK)
-if (LAPACK_FOUND AND BLAS_FOUND)
+find_package(BLAS REQUIRED)
+find_package(LAPACK REQUIRED)
+if(LAPACK_FOUND AND BLAS_FOUND)
 	message(STATUS "found lapack and blas config file. Linking targets lapack and blas")
 	set(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
-else () # LAPACK is not found
-
-## Need to use SuiteSparse_LINKER_LAPACK_BLAS_LIBS in our subproject in case of SHARED flag is set to ON
-SET(SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS OFF CACHE BOOL "Check if you have custom LAPACK/BLAS libraries (AMD,...)")
-IF (SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS)
-	SET(SUITESPARSE_CUSTOM_BLAS_LIB "" CACHE FILE "Path to custom library file for BLAS")
-	SET(SUITESPARSE_CUSTOM_LAPACK_LIB "" CACHE FILE "Path to custom library file for LAPACK")
-	IF (NOT EXISTS "${SUITESPARSE_CUSTOM_BLAS_LIB}" OR NOT EXISTS "${SUITESPARSE_CUSTOM_LAPACK_LIB}")
-		MESSAGE("*Error*: Correctly set SUITESPARSE_CUSTOM_BLAS_LIB and SUITESPARSE_CUSTOM_LAPACK_LIB or uncheck SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS")
-	ELSE()
-		SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS ${SUITESPARSE_CUSTOM_BLAS_LIB} ${SUITESPARSE_CUSTOM_LAPACK_LIB})
-	ENDIF()
-ELSE()
-	IF (UNIX)
-		SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS lapack blas rt)
-	ELSE()
-		IF(CMAKE_SIZEOF_VOID_P EQUAL 8)  # Size in bytes!
-			set(PATH_WORD_SIZE "x64")
-		ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8)  # Size in bytes!
-			set(PATH_WORD_SIZE "x32")
-		ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8)
-
-		add_library(blas SHARED IMPORTED)
-		set_property(TARGET blas PROPERTY IMPORTED_LOCATION ${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/libblas.dll)
-		set_property(TARGET blas PROPERTY IMPORTED_IMPLIB 	${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/libblas.lib)
-
-		add_library(lapack SHARED IMPORTED)
-		set_property(TARGET lapack PROPERTY IMPORTED_LOCATION 	${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/liblapack.dll)
-		set_property(TARGET lapack PROPERTY IMPORTED_IMPLIB 	${SuiteSparseProject_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/liblapack.lib)
-
-		SET(SuiteSparse_LINKER_LAPACK_BLAS_LIBS blas lapack)
-
-		## install lapack and blas dependencies
-		file(GLOB lapack_blas_windows_libs 	"${CMAKE_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/*.lib")
-		file(GLOB lapack_blas_windows_dll 	"${CMAKE_SOURCE_DIR}/lapack_windows/${PATH_WORD_SIZE}/*.dll")
-		if(lapack_blas_windows_dll AND lapack_blas_windows_libs)
-			set(SuiteSparse_LAPACK_BLAS_LIB_DIR "lib${LIB_POSTFIX}/lapack_blas_windows")
-			install(FILES 		${lapack_blas_windows_libs}
-								${lapack_blas_windows_dll}
-					DESTINATION ${SuiteSparse_LAPACK_BLAS_LIB_DIR}
-			)
-		endif()
-	ENDIF()
-ENDIF()
-ENDIF() # LAPACK found
-
-if(SuiteSparse_LAPACK_BLAS_LIB_DIR) # "Export" the imported targets in config.cmake manually
-	set(ExternConfig "add_library(blas SHARED IMPORTED)
-	set_property(TARGET blas PROPERTY IMPORTED_LOCATION \${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/libblas.dll)
-	set_property(TARGET blas PROPERTY IMPORTED_IMPLIB 	\${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/libblas.lib)
-
-	add_library(lapack SHARED IMPORTED)
-	set_property(TARGET lapack PROPERTY IMPORTED_LOCATION 	\${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/liblapack.dll)
-	set_property(TARGET lapack PROPERTY IMPORTED_IMPLIB 	\${_SuiteSparse_PREFIX}/${SuiteSparse_LAPACK_BLAS_LIB_DIR}/liblapack.lib)")
-endif()
+endif() # LAPACK is not found
 
-IF(BUILD_METIS)
+IF(BUILD_METIS OR USE_VCPKG_METIS)
 	set(SuiteSparse_LINKER_METIS_LIBS "metis")
 	## namespaced library target for config
 	set(SuiteSparse_EXPORTED_METIS_LIBS "SuiteSparse::metis")
@@ -311,7 +257,7 @@ configure_file(cmake/SuiteSparse-config-install.cmake.in
 ## do the EXPORT for allowing other project to easily use suitesparse with cmake
 install(EXPORT SuiteSparseTargets
 	FILE
-		SuiteSparse-targets.cmake
+		suitesparse-targets.cmake
 	NAMESPACE
 		SuiteSparse::
 	DESTINATION
diff --git a/SuiteSparse/CHOLMOD/Include/cholmod_blas.h b/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
index aef3e63..907512b 100644
--- a/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
+++ b/SuiteSparse/CHOLMOD/Include/cholmod_blas.h
@@ -27,6 +27,7 @@
 #elif defined (__linux) || defined (MGLNX86) || defined (ARCH_GLNX86)
 #define CHOLMOD_LINUX
 #define CHOLMOD_ARCHITECTURE "Linux"
+#define BLAS_NO_UNDERSCORE
 
 #elif defined (__APPLE__)
 #define CHOLMOD_MAC
diff --git a/SuiteSparse/CMakeLists.txt b/SuiteSparse/CMakeLists.txt
index c6e2834..5ef08a6 100644
--- a/SuiteSparse/CMakeLists.txt
+++ b/SuiteSparse/CMakeLists.txt
@@ -12,11 +12,11 @@ IF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
 ENDIF(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_BUILD_TYPE MATCHES "Debug")
 
 # Global flags:
-IF (BUILD_METIS)
+IF (BUILD_METIS OR USE_VCPKG_METIS)
 	INCLUDE_DIRECTORIES("${METIS_SOURCE_DIR}/include")
-ELSE (BUILD_METIS)
+ELSE ()
 	ADD_DEFINITIONS(-DNPARTITION)
-ENDIF ( BUILD_METIS)
+ENDIF ()
 
 # Disable COMPLEX numbers: disable it by default, since it causes problems in some platforms.
 SET(HAVE_COMPLEX OFF CACHE BOOL "Enables building SuiteSparse with complex numbers (disabled by default to avoid problems in some platforms)")
diff --git a/cmake/SuiteSparse-config-install.cmake.in b/cmake/SuiteSparse-config-install.cmake.in
index cb1f51f..12f654c 100644
--- a/cmake/SuiteSparse-config-install.cmake.in
+++ b/cmake/SuiteSparse-config-install.cmake.in
@@ -2,15 +2,11 @@
 get_filename_component(_SuiteSparse_SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
 get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_SELF_DIR}" PATH)
 get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
-get_filename_component(_SuiteSparse_PREFIX "${_SuiteSparse_PREFIX}" PATH)
 
-find_package(LAPACK CONFIG)
-if (NOT LAPACK_FOUND) # Load the LAPACK package with which we were built.
-	@ExternConfig@
-endif ()
+find_package(LAPACK REQUIRED)
 
 # Load targets from the install tree.
-include(${_SuiteSparse_SELF_DIR}/SuiteSparse-targets.cmake)
+include(${_SuiteSparse_SELF_DIR}/suitesparse-targets.cmake)
 
 # Report SuiteSparse header search locations.
 set(SuiteSparse_INCLUDE_DIRS ${_SuiteSparse_PREFIX}/include)
@@ -31,6 +27,10 @@ set(SuiteSparse_LIBRARIES
 	SuiteSparse::spqr
 	@SuiteSparse_EXPORTED_METIS_LIBS@
 )
+set(SUITESPARSE_LIBRARIES ${SuiteSparse_LIBRARIES})
 
 unset(_SuiteSparse_PREFIX)
 unset(_SuiteSparse_SELF_DIR)
+
+set(SUITESPARSE_FOUND TRUE)
+set(SuiteSparse_FOUND TRUE)
