diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94e4292..7d0e142 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -169,27 +169,12 @@ endif()
 
 
 if(MSVC)
-	if((NOT CBOR_INCLUDE_DIRS) OR (NOT CBOR_LIBRARY_DIRS) OR
-	   (NOT CRYPTO_INCLUDE_DIRS) OR (NOT CRYPTO_LIBRARY_DIRS) OR
-	   (NOT ZLIB_INCLUDE_DIRS) OR (NOT ZLIB_LIBRARY_DIRS))
-		message(FATAL_ERROR "please define "
-		   "{CBOR,CRYPTO,ZLIB}_{INCLUDE,LIBRARY}_DIRS when "
-		   "building under msvc")
-	endif()
-	if(BUILD_TESTS AND BUILD_SHARED_LIBS AND
-	   ((NOT CBOR_BIN_DIRS) OR (NOT ZLIB_BIN_DIRS) OR (NOT CRYPTO_BIN_DIRS)))
-		message(FATAL_ERROR "please define {CBOR,CRYPTO,ZLIB}_BIN_DIRS "
-		   "when building tests")
-	endif()
-	if(NOT CBOR_LIBRARIES)
-		set(CBOR_LIBRARIES cbor)
-	endif()
-	if(NOT ZLIB_LIBRARIES)
-		set(ZLIB_LIBRARIES zlib1)
-	endif()
-	if(NOT CRYPTO_LIBRARIES)
-		set(CRYPTO_LIBRARIES crypto)
-	endif()
+	include(FindPkgConfig)
+	pkg_search_module(libcbor REQUIRED IMPORTED_TARGET libcbor)
+	find_package(OpenSSL REQUIRED)
+	find_package(ZLIB REQUIRED)
+	set(CBOR_LIBRARIES PkgConfig::libcbor)
+	set(CRYPTO_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
 
 	set(MSVC_DISABLED_WARNINGS_LIST
 		"C4152" # nonstandard extension used: function/data pointer
@@ -218,26 +203,22 @@ if(MSVC)
 	set(NFC_LINUX OFF)
 else()
 	include(FindPkgConfig)
-	pkg_search_module(CBOR libcbor)
-	pkg_search_module(CRYPTO libcrypto)
-	pkg_search_module(ZLIB zlib)
+	pkg_search_module(libcbor REQUIRED IMPORTED_TARGET libcbor)
+	find_package(OpenSSL REQUIRED)
+	find_package(ZLIB REQUIRED)
 
 	if(NOT CBOR_FOUND AND NOT HAVE_CBOR_H)
-		message(FATAL_ERROR "could not find libcbor")
+		# message(FATAL_ERROR "could not find libcbor")
 	endif()
 	if(NOT CRYPTO_FOUND AND NOT HAVE_OPENSSLV_H)
-		message(FATAL_ERROR "could not find libcrypto")
+		# message(FATAL_ERROR "could not find libcrypto")
 	endif()
 	if(NOT ZLIB_FOUND)
 		message(FATAL_ERROR "could not find zlib")
 	endif()
 
-	if(NOT CBOR_LIBRARIES)
-		set(CBOR_LIBRARIES "cbor")
-	endif()
-	if(NOT CRYPTO_LIBRARIES)
-		set(CRYPTO_LIBRARIES "crypto")
-	endif()
+	set(CBOR_LIBRARIES PkgConfig::libcbor)
+	set(CRYPTO_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
 
 	if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
 		pkg_search_module(UDEV libudev REQUIRED)
@@ -277,8 +258,8 @@ else()
 
 	if(USE_HIDAPI)
 		add_definitions(-DUSE_HIDAPI)
-		pkg_search_module(HIDAPI hidapi${HIDAPI_SUFFIX} REQUIRED)
-		set(HIDAPI_LIBRARIES hidapi${HIDAPI_SUFFIX})
+		pkg_search_module(hidapi REQUIRED IMPORTED_TARGET hidapi)
+		set(HIDAPI_LIBRARIES PkgConfig::hidapi)
 	endif()
 
 	if(NFC_LINUX)
