Browse Source

FindGDAL: support finding additional GDAL library names

Ben Boeckel 4 years ago
parent
commit
f4b53fadda
1 changed files with 17 additions and 1 deletions
  1. 17 1
      Modules/FindGDAL.cmake

+ 17 - 1
Modules/FindGDAL.cmake

@@ -52,6 +52,8 @@ The following variables may be set to modify the search strategy:
   If set, ``gdal-config`` will not be used. This can be useful if there are
   If set, ``gdal-config`` will not be used. This can be useful if there are
   GDAL libraries built with autotools (which provide the tool) and CMake (which
   GDAL libraries built with autotools (which provide the tool) and CMake (which
   do not) in the same environment.
   do not) in the same environment.
+``GDAL_ADDITIONAL_LIBRARY_VERSIONS``
+  Extra versions of library names to search for.
 #]=======================================================================]
 #]=======================================================================]
 
 
 # $GDALDIR is an environment variable that would
 # $GDALDIR is an environment variable that would
@@ -145,8 +147,20 @@ if(UNIX AND NOT FindGDAL_SKIP_GDAL_CONFIG)
     endif()
     endif()
 endif()
 endif()
 
 
+# GDAL name its library when built with CMake as `gdal${major}${minor}`.
+set(_gdal_versions
+    ${GDAL_ADDITIONAL_LIBRARY_VERSIONS} 3.0 2.4 2.3 2.2 2.1 2.0 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2)
+
+set(_gdal_libnames)
+foreach (_gdal_version IN LISTS _gdal_versions)
+    string(REPLACE "." "" _gdal_version "${_gdal_version}")
+    list(APPEND _gdal_libnames "gdal${_gdal_version}" "GDAL${_gdal_version}")
+endforeach ()
+unset(_gdal_version)
+unset(_gdal_versions)
+
 find_library(GDAL_LIBRARY
 find_library(GDAL_LIBRARY
-  NAMES ${_gdal_lib} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
+  NAMES ${_gdal_lib} ${_gdal_libnames} gdal gdal_i gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
   HINTS
   HINTS
      ENV GDAL_DIR
      ENV GDAL_DIR
      ENV GDAL_ROOT
      ENV GDAL_ROOT
@@ -155,6 +169,8 @@ find_library(GDAL_LIBRARY
   DOC "Path to the GDAL library"
   DOC "Path to the GDAL library"
 )
 )
 mark_as_advanced(GDAL_LIBRARY)
 mark_as_advanced(GDAL_LIBRARY)
+unset(_gdal_libnames)
+unset(_gdal_lib)
 
 
 if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
 if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
     file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version
     file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version