Browse Source

FindGDAL: set the GDAL_VERSION

Ben Boeckel 7 years ago
parent
commit
22ba9b6a32
3 changed files with 17 additions and 7 deletions
  1. 14 1
      Modules/FindGDAL.cmake
  2. 1 3
      Tests/FindGDAL/Test/CMakeLists.txt
  3. 2 3
      Tests/FindGDAL/Test/main.c

+ 14 - 1
Modules/FindGDAL.cmake

@@ -24,6 +24,8 @@ This module will set the following variables in your project:
   Include directories for GDAL headers.
 ``GDAL_LIBRARIES``
   Libraries to link to GDAL.
+``GDAL_VERSION``
+  The version of GDAL found.
 
 Cache variables
 ^^^^^^^^^^^^^^^
@@ -138,8 +140,19 @@ find_library(GDAL_LIBRARY
   PATH_SUFFIXES lib
 )
 
+if (EXISTS "${GDAL_INCLUDE_DIR}/gdal_version.h")
+    file(STRINGS "${GDAL_INCLUDE_DIR}/gdal_version.h" _gdal_version
+        REGEX "GDAL_RELEASE_NAME")
+    string(REGEX REPLACE ".*\"\(.*\)\"" "\\1" GDAL_VERSION "${_gdal_version}")
+    unset(_gdal_version)
+else ()
+    set(GDAL_VERSION GDAL_VERSION-NOTFOUND)
+endif ()
+
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL DEFAULT_MSG GDAL_LIBRARY GDAL_INCLUDE_DIR)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDAL
+    VERSION_VAR GDAL_VERSION
+    REQUIRED_VARS GDAL_LIBRARY GDAL_INCLUDE_DIR)
 
 if (GDAL_FOUND AND NOT TARGET GDAL::GDAL)
     add_library(GDAL::GDAL UNKNOWN IMPORTED)

+ 1 - 3
Tests/FindGDAL/Test/CMakeLists.txt

@@ -4,9 +4,7 @@ include(CTest)
 
 find_package(GDAL REQUIRED)
 
-# FindGDAL doesn't export a version number.
-#add_definitions(-DCMAKE_EXPECTED_GDAL_VERSION="${GDAL_VERSION}")
-add_definitions(-DCMAKE_EXPECTED_GDAL_VERSION="unknown")
+add_definitions(-DCMAKE_EXPECTED_GDAL_VERSION="${GDAL_VERSION}")
 
 add_executable(test_tgt main.c)
 target_link_libraries(test_tgt GDAL::GDAL)

+ 2 - 3
Tests/FindGDAL/Test/main.c

@@ -1,12 +1,11 @@
 #include <gdal.h>
 #include <stdio.h>
-// #include <string.h>
+#include <string.h>
 
 int main()
 {
   printf("Found GDAL version %s, expected version %s\n", GDAL_RELEASE_NAME,
          CMAKE_EXPECTED_GDAL_VERSION);
   GDALAllRegister();
-  // return strcmp(GDAL_RELEASE_NAME, CMAKE_EXPECTED_GDAL_VERSION);
-  return 0;
+  return strcmp(GDAL_RELEASE_NAME, CMAKE_EXPECTED_GDAL_VERSION);
 }