diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6860fd5afb718426cd6df848547977927d2fa4d9..e103058666c78afa638e507fa9473ea149373acc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,7 +61,13 @@ if (NOT MSVC)
     pkg_search_module (Nettle REQUIRED IMPORTED_TARGET nettle)
     check_include_file_cxx(msgpack.hpp HAVE_MSGPACKCXX)
     if (NOT HAVE_MSGPACKCXX)
-        find_package (msgpack REQUIRED CONFIG NAMES msgpackc-cxx msgpack msgpack-cxx)
+        find_package(msgpack QUIET CONFIG NAMES msgpack msgpackc-cxx)
+        if (NOT msgpack_FOUND)
+            find_package(msgpack REQUIRED CONFIG NAMES msgpack-cxx)
+            set(MSGPACK_TARGET "msgpack-cxx")
+        else()
+            set(MSGPACK_TARGET "msgpackc-cxx")
+        endif()
     endif()
     if (OPENDHT_TOOLS)
         find_package (Readline 6 REQUIRED)
@@ -353,7 +359,7 @@ target_link_libraries(opendht
         ${FMT_LIBRARY}
 )
 if (NOT HAVE_MSGPACKCXX)
-    target_link_libraries(opendht PUBLIC msgpackc-cxx)
+    target_link_libraries(opendht PUBLIC MSGPACK_TARGET)
 endif()
 if (Jsoncpp_FOUND)
     target_link_libraries(opendht PUBLIC PkgConfig::Jsoncpp)