diff --git a/CMakeLists.txt b/CMakeLists.txt
index fa97acaa3..900941f3b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,7 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with OpenOrienteering. If not, see .
-cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
if(POLICY CMP0115)
cmake_policy(SET CMP0115 NEW)
@@ -224,7 +224,7 @@ elseif(PROJ_VERSION VERSION_LESS 6.2.1)
endif()
if(Mapper_USE_GDAL)
- find_package(GDAL REQUIRED)
+ find_package(GDAL MODULE REQUIRED)
endif()
find_package(Qt5Core 5.5 REQUIRED)
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
index 9e73fe9ae..09557064b 100644
--- a/packaging/CMakeLists.txt
+++ b/packaging/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright 2012-2020 Kai Pastor
+# Copyright 2012-2021, 2024-2026 Kai Pastor
#
# This file is part of OpenOrienteering.
#
@@ -282,7 +282,7 @@ if(Mapper_PACKAGE_GDAL)
if(GDAL_CONFIG AND gdal_config_result EQUAL 0)
set(gdal_data_paths "${gdal_data_dir}")
elseif(GDAL_INCLUDE_DIRS)
- string(REGEX REPLACE "/include$" "/share/gdal" gdal_data_paths ${GDAL_INCLUDE_DIRS}) # MSYS2 et al.
+ string(REGEX REPLACE "/include$" "/share/gdal" gdal_data_paths "${GDAL_INCLUDE_DIRS}") # MSYS2 et al.
else()
set(gdal_data_paths PATHS "${CMAKE_INSTALL_PREFIX}/share/gdal")
endif()
@@ -303,8 +303,12 @@ if(Mapper_PACKAGE_GDAL)
install(
DIRECTORY "${GDAL_DATA_DIR}/"
DESTINATION "${MAPPER_DATA_DESTINATION}/gdal")
- get_filename_component(GDAL_LIBRARY_DIR "{GDAL_LIBRARY}" PATH)
- list(APPEND MAPPER_LIB_HINTS "${GDAL_LIBRARY_DIR}")
+ foreach(item IN LISTS GDAL_LIBRARIES)
+ if(EXISTS "${item}")
+ get_filename_component(GDAL_LIBRARY_DIR "{item}" PATH)
+ list(APPEND MAPPER_LIB_HINTS "${GDAL_LIBRARY_DIR}")
+ endif()
+ endforeach()
endif()
unset(MAPPER_QT_PLUGINS)
diff --git a/src/gdal/CMakeLists.txt b/src/gdal/CMakeLists.txt
index c15832dc0..87aafd689 100644
--- a/src/gdal/CMakeLists.txt
+++ b/src/gdal/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright 2016-2020 Kai Pastor
+# Copyright 2016-2020, 2026 Kai Pastor
#
# This file is part of OpenOrienteering.
#
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with OpenOrienteering. If not, see .
-find_package(GDAL REQUIRED)
+find_package(GDAL MODULE REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
@@ -51,10 +51,10 @@ target_compile_definitions(mapper-gdal PRIVATE
target_compile_definitions(mapper-gdal INTERFACE MAPPER_USE_GDAL)
-target_include_directories(mapper-gdal SYSTEM PRIVATE "${GDAL_INCLUDE_DIR}")
+target_include_directories(mapper-gdal SYSTEM PRIVATE ${GDAL_INCLUDE_DIRS})
target_include_directories(mapper-gdal PRIVATE "${PROJECT_SOURCE_DIR}/src")
-target_link_libraries(mapper-gdal "${GDAL_LIBRARY}" Qt5::Core Qt5::Gui Qt5::Widgets Mapper_Common)
+target_link_libraries(mapper-gdal ${GDAL_LIBRARIES} Qt5::Core Qt5::Gui Qt5::Widgets Mapper_Common)
set_target_properties(mapper-gdal PROPERTIES PREFIX "")
@@ -71,6 +71,6 @@ add_custom_command(OUTPUT "${PROJECT_BINARY_DIR}/gdal/mapper-osmconf.ini"
# Utility to dump GDAL format information
add_executable(mapper-gdal-info mapper_gdal_info.cpp)
-target_include_directories(mapper-gdal-info SYSTEM PRIVATE "${GDAL_INCLUDE_DIR}")
-target_link_libraries(mapper-gdal-info "${GDAL_LIBRARY}")
+target_include_directories(mapper-gdal-info SYSTEM PRIVATE ${GDAL_INCLUDE_DIRS})
+target_link_libraries(mapper-gdal-info ${GDAL_LIBRARIES})
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 145450a59..b1471a2f1 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright 2012-2020 Kai Pastor
+# Copyright 2012-2022, 2025, 2026 Kai Pastor
#
# This file is part of OpenOrienteering.
#
@@ -172,8 +172,8 @@ add_unit_test(georeferencing_t ../src/core/georeferencing
if (Mapper_USE_GDAL)
# cf. src/gdal/CMakeLists.txt
target_compile_definitions(georeferencing_t PRIVATE MAPPER_TEST_GDAL)
- target_include_directories(georeferencing_t SYSTEM PRIVATE "${GDAL_INCLUDE_DIR}")
- target_link_libraries(georeferencing_t PRIVATE "${GDAL_LIBRARY}")
+ target_include_directories(georeferencing_t SYSTEM PRIVATE ${GDAL_INCLUDE_DIRS})
+ target_link_libraries(georeferencing_t PRIVATE ${GDAL_LIBRARIES})
endif()
add_unit_test(grid_t ../src/util/util)
add_unit_test(key_value_container_t ../src/util/key_value_container)