diff --git a/cmake/FindPROJECT_NAME.cmake.in.in b/cmake/FindPROJECT_NAME.cmake.in.in
index 570821c8f63e1d9664b7b349ea01d99f66a7397f..0b67598c3ae7f69e88a61ce6581cce3649a2119e 100644
--- a/cmake/FindPROJECT_NAME.cmake.in.in
+++ b/cmake/FindPROJECT_NAME.cmake.in.in
@@ -6,26 +6,33 @@
 #   @PROJECT_NAME@_VERSION      : the package version
 #   @PROJECT_NAME@_INCLUDE_DIRS : path to the include directory
 #   @PROJECT_NAME@_LIBRARY_DIRS : path to the library directory
-#   @PROJECT_NAME@_LIBRARIES    : the provided libraries
+#   @PROJECT_NAME@_LIBRARIES    : libraries the depending project needs to link against
 #   @PROJECT_NAME@_CXX_FLAGS    : additional C++ compiler flags
 #   @PROJECT_NAME@_LINKER_FLAGS : additional linker flags
 #
 # @author Martin Killenberg, DESY
 #
 
+# The library itself must be "searched" using the FIND_LIBRARY command in the known install directory, to set
+# the variable properly
+FIND_LIBRARY(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@
+  @CMAKE_INSTALL_PREFIX@/lib
+  NO_DEFAULT_PATH
+)
+
 # Since this file is already part of the installation to be found, the configuration can be hard-coded at
 # installation time
 set(@PROJECT_NAME@_VERSION "@@PROJECT_NAME@_SOVERSION@")
 set(@PROJECT_NAME@_INCLUDE_DIRS @@PROJECT_NAME@_INCLUDE_DIRS@)
 set(@PROJECT_NAME@_LIBRARY_DIRS @@PROJECT_NAME@_LIBRARY_DIRS@)
-set(@PROJECT_NAME@_LIBRARIES @@PROJECT_NAME@_LIBRARIES@)
+set(@PROJECT_NAME@_LIBRARIES ${@PROJECT_NAME@_LIBRARY} @@PROJECT_NAME@_LIBRARIES@)
 set(@PROJECT_NAME@_CXX_FLAGS "@@PROJECT_NAME@_CXX_FLAGS@")
 set(@PROJECT_NAME@_LINKER_FLAGS "@@PROJECT_NAME@_LINKER_FLAGS@")
+set(@PROJECT_NAME@_PREFIX "@CMAKE_INSTALL_PREFIX@")
 
 # Use a macro provided by CMake to check if all the listed arguments are valid and set @PROJECT_NAME@_FOUND accordingly.
 # This is mainly important to check the version.
 set(@PROJECT_NAME@_FOUND 0)
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(@PROJECT_NAME@ REQUIRED_VARS @PROJECT_NAME@_LIBRARIES @PROJECT_NAME@_INCLUDE_DIRS
-	VERSION_VAR @PROJECT_NAME@_VERSION )
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(@PROJECT_NAME@ REQUIRED_VARS @PROJECT_NAME@_PREFIX VERSION_VAR @PROJECT_NAME@_VERSION )
 
diff --git a/cmake/create_cmake_config_files.cmake b/cmake/create_cmake_config_files.cmake
index 1ee11a177bcee10ce18509c60b380d95a0dc8809..ab4176b165ae9ec6ce281209cae42b83e52c4b05 100644
--- a/cmake/create_cmake_config_files.cmake
+++ b/cmake/create_cmake_config_files.cmake
@@ -4,10 +4,11 @@
 # Create the Find${PROJECT_NAME}.cmake cmake macro and the ${PROJECT_NAME}-config shell script and installs them.
 #
 # Expects the following input variables:
-#   ${PROJECT_NAME}_SOVERSION - version of the .so library file
+#   ${PROJECT_NAME}_SOVERSION - version of the .so library file (or just MAJOR.MINOR without the patch level)
 #   ${PROJECT_NAME}_INCLUDE_DIRS - list include directories needed when compiling against this project
 #   ${PROJECT_NAME}_LIBRARY_DIRS - list of library directories needed when linking against this project
-#   ${PROJECT_NAME}_LIBRARIES - list of libraries needed when linking against this project
+#   ${PROJECT_NAME}_LIBRARIES - list of additional libraries needed when linking against this project. The library
+#                               provided by the project will be added automatically
 #   ${PROJECT_NAME}_CXX_FLAGS - list of additional C++ compiler flags needed when compiling against this project
 #   ${PROJECT_NAME}_LINKER_FLAGS - list of additional linker flags needed when linking against this project
 #   ${PROJECT_NAME}_MEXFLAGS - (optional) mex compiler flags