diff options
author | Brad King <brad.king@kitware.com> | 2018-11-02 11:57:48 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2018-11-02 11:57:54 (GMT) |
commit | bdc5618e18b9868f46e48641cdd35f361199f28e (patch) | |
tree | edd99bc0966cb1f5708f88a74717f4e2c564a4e9 | |
parent | a052479a5c75cc4e892fe68002bc0a4d97013a66 (diff) | |
parent | 22ba9b6a328a0eea77559b2d607fe8d525445812 (diff) | |
download | CMake-bdc5618e18b9868f46e48641cdd35f361199f28e.zip CMake-bdc5618e18b9868f46e48641cdd35f361199f28e.tar.gz CMake-bdc5618e18b9868f46e48641cdd35f361199f28e.tar.bz2 |
Merge topic 'FindGDAL-target'
22ba9b6a32 FindGDAL: set the GDAL_VERSION
525ff0c3bc Tests/FindGDAL: add a test for FindGDAL
87324b9b6a FindGDAL: add an imported target
dfb3f58f79 FindGDAL: Modernize documentation layout
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2552
-rw-r--r-- | Help/release/dev/FindGDAL-target.rst | 4 | ||||
-rw-r--r-- | Modules/FindGDAL.cmake | 57 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/FindGDAL/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/FindGDAL/Test/CMakeLists.txt | 16 | ||||
-rw-r--r-- | Tests/FindGDAL/Test/main.c | 11 |
6 files changed, 91 insertions, 11 deletions
diff --git a/Help/release/dev/FindGDAL-target.rst b/Help/release/dev/FindGDAL-target.rst new file mode 100644 index 0000000..b121a72 --- /dev/null +++ b/Help/release/dev/FindGDAL-target.rst @@ -0,0 +1,4 @@ +FindGDAL-target +--------------- + +* The :module:`FindGDAL` module now provides an imported target. diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index 030553f..8522f9b 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -5,28 +5,45 @@ FindGDAL -------- +Find GDAL. +IMPORTED Targets +^^^^^^^^^^^^^^^^ -Locate gdal +This module defines :prop_tgt:`IMPORTED` target ``GDAL::GDAL`` +if GDAL has been found. -This module accepts the following environment variables: +Result Variables +^^^^^^^^^^^^^^^^ -:: +This module will set the following variables in your project: - GDAL_DIR or GDAL_ROOT - Specify the location of GDAL +``GDAL_FOUND`` + True if GDAL is found. +``GDAL_INCLUDE_DIRS`` + Include directories for GDAL headers. +``GDAL_LIBRARIES`` + Libraries to link to GDAL. +``GDAL_VERSION`` + The version of GDAL found. +Cache variables +^^^^^^^^^^^^^^^ +The following cache variables may also be set: -This module defines the following CMake variables: +``GDAL_LIBRARY`` + The libgdal library file. +``GDAL_INCLUDE_DIR`` + The directory containing ``gdal.h``. -:: +Hints +^^^^^ - GDAL_FOUND - True if libgdal is found - GDAL_LIBRARY - A variable pointing to the GDAL library - GDAL_INCLUDE_DIR - Where to find the headers +Set ``GDAL_DIR`` or ``GDAL_ROOT`` in the environment to specify the +GDAL installation prefix. #]=======================================================================] -# # $GDALDIR is an environment variable that would # correspond to the ./configure --prefix=$GDAL_DIR # used in building gdal. @@ -123,8 +140,26 @@ 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) + set_target_properties(GDAL::GDAL PROPERTIES + IMPORTED_LOCATION "${GDAL_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GDAL_INCLUDE_DIR}") +endif () set(GDAL_LIBRARIES ${GDAL_LIBRARY}) set(GDAL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR}) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index c7cfa86..1c49fea 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1384,6 +1384,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindFreetype) endif() + if(CMake_TEST_FindGDAL) + add_subdirectory(FindGDAL) + endif() + if(CMake_TEST_FindGSL) add_subdirectory(FindGSL) endif() diff --git a/Tests/FindGDAL/CMakeLists.txt b/Tests/FindGDAL/CMakeLists.txt new file mode 100644 index 0000000..12f95e1 --- /dev/null +++ b/Tests/FindGDAL/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindGDAL.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindGDAL/Test" + "${CMake_BINARY_DIR}/Tests/FindGDAL/Test" + ${build_generator_args} + --build-project TestFindGDAL + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) diff --git a/Tests/FindGDAL/Test/CMakeLists.txt b/Tests/FindGDAL/Test/CMakeLists.txt new file mode 100644 index 0000000..8bdc57c --- /dev/null +++ b/Tests/FindGDAL/Test/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.10) +project(TestFindGDAL C) +include(CTest) + +find_package(GDAL REQUIRED) + +add_definitions(-DCMAKE_EXPECTED_GDAL_VERSION="${GDAL_VERSION}") + +add_executable(test_tgt main.c) +target_link_libraries(test_tgt GDAL::GDAL) +add_test(NAME test_tgt COMMAND test_tgt) + +add_executable(test_var main.c) +target_include_directories(test_var PRIVATE ${GDAL_INCLUDE_DIRS}) +target_link_libraries(test_var PRIVATE ${GDAL_LIBRARIES}) +add_test(NAME test_var COMMAND test_var) diff --git a/Tests/FindGDAL/Test/main.c b/Tests/FindGDAL/Test/main.c new file mode 100644 index 0000000..7b31a13 --- /dev/null +++ b/Tests/FindGDAL/Test/main.c @@ -0,0 +1,11 @@ +#include <gdal.h> +#include <stdio.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); +} |