diff --git a/cmake/libssh2-config.cmake.in b/cmake/libssh2-config.cmake.in
index edc86d7..fd53d55 100644
--- a/cmake/libssh2-config.cmake.in
+++ b/cmake/libssh2-config.cmake.in
@@ -22,10 +22,22 @@ include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
 
 # Alias for either shared or static library
 if(NOT TARGET @PROJECT_NAME@::@LIB_NAME@)
+ if(CMAKE_VERSION VERSION_LESS "3.18.0")
+  # cannot add alias to non-global imported library
+  add_library(@PROJECT_NAME@::@LIB_NAME@ INTERFACE IMPORTED)
+  set_target_properties(@PROJECT_NAME@::@LIB_NAME@ PROPERTIES INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@LIB_SELECTED@)
+ else()
   add_library(@PROJECT_NAME@::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@)
+ endif()
 endif()
 
 # Compatibility alias
 if(NOT TARGET Libssh2::@LIB_NAME@)
+ if(CMAKE_VERSION VERSION_LESS "3.18.0")
+  # cannot add alias to non-global imported library
+  add_library(Libssh2::@LIB_NAME@ INTERFACE IMPORTED)
+  set_target_properties(Libssh2::@LIB_NAME@ PROPERTIES INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@LIB_SELECTED@)
+ else()
   add_library(Libssh2::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@)
+ endif()
 endif()
