Using GDAL in CMake projects

Added in version 3.5.

The recommended way to use the GDAL library 3.5 or higher in a CMake project is to link to the imported library target GDAL::GDAL provided by the CMake configuration which comes with the library. Typical usage is:

find_package(GDAL CONFIG REQUIRED)

target_link_libraries(MyApp PRIVATE GDAL::GDAL)

By adding the imported library target GDAL::GDAL to the target link libraries, CMake will also pass the include directories to the compiler.

The CMake command find_package will look for the configuration in a number of places. The lookup can be adjusted for all packages by setting the cache variable or environment variable CMAKE_PREFIX_PATH. In particular, CMake will consult (and set) the cache variable GDAL_DIR.

If a specific minor version is required, you can search for this via:

find_package(GDAL 3.10 CONFIG REQUIRED)

If more than one minor version is to be supported at the same time, ${GDAL_VERSION} itself must be evaluated.

find_package(GDAL CONFIG REQUIRED)
if(GDAL_VERSION VERSION_LESS "3.7" OR GDAL_VERSION VERSION_GREATER "3.9")
  message(FATAL_ERROR "Required at least GDAL version 3.7 - 3.9, but found ${GDAL_VERSION}.")
endif()

Before GDAL 3.5, it is recommended to use find module supplied with CMake. This also creates the GDAL::GDAL target. It requires CMake version 3.14.

cmake_minimum_required(VERSION 3.14)

find_package(GDAL CONFIG)
if(NOT GDAL_FOUND)
    find_package(GDAL REQUIRED)
endif()

target_link_libraries(MyApp PRIVATE GDAL::GDAL)