diff --git a/CMakeLists.txt b/CMakeLists.txt
index b27b0f39dfa3939075787ecc055c2d254b7066ab..dad3553678a5a1a124be4a95a5edad463a07d758 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,6 +81,7 @@ if (DHTNET_PUPNP)
             src/upnp/protocol/pupnp/pupnp.cpp
             src/upnp/protocol/pupnp/upnp_igd.cpp
         )
+        set (requiresprivate "${requiresprivate} libupnp")
     endif()
 endif()
 if (DHTNET_NATPMP)
@@ -99,6 +100,7 @@ if (DHTNET_NATPMP)
             src/upnp/protocol/natpmp/nat_pmp.cpp
             src/upnp/protocol/natpmp/pmp_igd.cpp
         )
+        set (libsprivate "${libsprivate} ${natpmp_LIBRARIES}")
     endif()
 endif()
 
diff --git a/dhtnet.pc.in b/dhtnet.pc.in
index 9ea2f2f1cb88f0a070f39644c5b9d7a9d405f386..00a628e919d8ad0eea7b788320ff2b8203d71918 100644
--- a/dhtnet.pc.in
+++ b/dhtnet.pc.in
@@ -6,6 +6,7 @@ Name: dhtnet
 Description: C++ peer to peer networking library
 Version: @VERSION@
 Libs: -L${libdir} -ldhtnet
+Libs.private: @libsprivate@
 Requires: opendht >= 2.6
-Requires.private: libpjproject
+Requires.private: libpjproject @requiresprivate@
 Cflags: -I${includedir}