diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a0dcb1..c1f2f02 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -585,9 +585,16 @@ if(MINGW AND BUILD_SHARED_LIBS)
     set_target_properties(poppler PROPERTIES SUFFIX "-${POPPLER_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
 endif()
 target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
-install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+target_include_directories(poppler PUBLIC $<INSTALL_INTERFACE:include/poppler>)
+set_target_properties(poppler PROPERTIES EXPORT_NAME poppler-private)
+install(TARGETS poppler EXPORT unofficial-poppler-targets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(EXPORT unofficial-poppler-targets NAMESPACE unofficial::poppler:: DESTINATION share/unofficial-poppler)
 
 if(ENABLE_UNSTABLE_API_ABI_HEADERS)
+  target_include_directories(poppler PUBLIC
+      $<INSTALL_INTERFACE:include/poppler/fofi>
+      $<INSTALL_INTERFACE:include/poppler/goo>
+  )
   install(FILES
     poppler/Annot.h
     poppler/AnnotStampImageHelper.h
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index c37936b..344933c 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -32,7 +32,8 @@ if(MINGW AND BUILD_SHARED_LIBS)
     set_target_properties(poppler-cpp PROPERTIES SUFFIX "-${POPPLER_CPP_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
 endif()
 target_link_libraries(poppler-cpp poppler ${ICONV_LIBRARIES})
-install(TARGETS poppler-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(TARGETS poppler-cpp EXPORT unofficial-poppler-cpp-targets RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+install(EXPORT unofficial-poppler-cpp-targets NAMESPACE unofficial::poppler:: DESTINATION share/unofficial-poppler)
 
 install(FILES
   poppler-destination.h