diff --git a/blosc/CMakeLists.txt b/blosc/CMakeLists.txt
index 1d1bebe..3a7a51c 100644
--- a/blosc/CMakeLists.txt
+++ b/blosc/CMakeLists.txt
@@ -109,7 +109,7 @@ endif(NOT DEACTIVATE_ZLIB)
 
 if (NOT DEACTIVATE_ZSTD)
     if (ZSTD_FOUND)
-        set(LIBS ${LIBS} ${ZSTD_LIBRARY})
+        set(LIBS ${LIBS} ${ZSTD_LIBRARIES})
     else (ZSTD_FOUND)
       file(GLOB ZSTD_FILES
         ${ZSTD_LOCAL_DIR}/common/*.c
diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake
index e581a80..8ce17c5 100644
--- a/cmake/FindLZ4.cmake
+++ b/cmake/FindLZ4.cmake
@@ -1,10 +1,13 @@
-find_path(LZ4_INCLUDE_DIR lz4.h)
+find_path(LZ4_INCLUDE_DIRS NAMES lz4.h)
 
-find_library(LZ4_LIBRARY NAMES lz4)
+find_library(LZ4_LIBRARY_DEBUG NAMES lz4d)
+find_library(LZ4_LIBRARY_RELEASE NAMES lz4)
 
-if (LZ4_INCLUDE_DIR AND LZ4_LIBRARY)
-    set(LZ4_FOUND TRUE)
-    message(STATUS "Found LZ4 library: ${LZ4_LIBRARY}")
-else ()
-    message(STATUS "No LZ4 library found.  Using internal sources.")
-endif ()
+include(SelectLibraryConfigurations)
+select_library_configurations(LZ4)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+    LZ4
+    REQUIRED_VARS LZ4_LIBRARIES LZ4_INCLUDE_DIRS
+)
diff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake
index 688d4d5..c8b9a05 100644
--- a/cmake/FindSnappy.cmake
+++ b/cmake/FindSnappy.cmake
@@ -1,10 +1,13 @@
-find_path(SNAPPY_INCLUDE_DIR snappy-c.h)
+find_path(SNAPPY_INCLUDE_DIR snappy.h)
 
-find_library(SNAPPY_LIBRARY NAMES snappy)
+find_library(SNAPPY_LIBRARY_DEBUG NAMES snappyd)
+find_library(SNAPPY_LIBRARY_RELEASE NAMES snappy)
 
-if (SNAPPY_INCLUDE_DIR AND SNAPPY_LIBRARY)
-    set(SNAPPY_FOUND TRUE)
-    message(STATUS "Found SNAPPY library: ${SNAPPY_LIBRARY}")
-else ()
-    message(STATUS "No snappy found.  Using internal sources.")
-endif ()
+include(SelectLibraryConfigurations)
+select_library_configurations(SNAPPY)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+    SNAPPY DEFAULT_MSG
+    SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR
+)
diff --git a/cmake/FindZstd.cmake b/cmake/FindZstd.cmake
index 7db4bb9..ba20ba6 100644
--- a/cmake/FindZstd.cmake
+++ b/cmake/FindZstd.cmake
@@ -1,10 +1,30 @@
+include(FindPackageHandleStandardArgs)
+
 find_path(ZSTD_INCLUDE_DIR zstd.h)
 
-find_library(ZSTD_LIBRARY NAMES zstd)
+get_filename_component(_prefix_path ${ZSTD_INCLUDE_DIR} PATH)
+
+find_library(
+    ZSTD_LIBRARY_DEBUG
+    NAMES zstdd
+    PATHS ${_prefix_path}/debug/lib
+    NO_DEFAULT_PATH
+)
+
+find_library(
+    ZSTD_LIBRARY_RELEASE
+    NAMES zstd
+    PATHS ${_prefix_path}/lib
+    NO_DEFAULT_PATH
+)
+
+unset(_prefix_path)
+
+include(SelectLibraryConfigurations)
+select_library_configurations(ZSTD)
 
-if (ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY)
-    set(ZSTD_FOUND TRUE)
-    message(STATUS "Found Zstd library: ${ZSTD_LIBRARY}")
-else ()
-    message(STATUS "No Zstd library found.  Using internal sources.")
-endif ()
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+    ZSTD
+    REQUIRED_VARS ZSTD_LIBRARIES ZSTD_INCLUDE_DIR
+)
