vcpkg-cmake-wrapper.cmake 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. include(SelectLibraryConfigurations)
  2. find_path(GDAL_INCLUDE_DIR
  3. NAMES gdal.h
  4. PATHS "${CMAKE_CURRENT_LIST_DIR}/../../include"
  5. NO_DEFAULT_PATH
  6. )
  7. find_library(GDAL_LIBRARY_DEBUG
  8. NAMES gdal_d gdal_i_d gdal
  9. NAMES_PER_DIR
  10. PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib"
  11. NO_DEFAULT_PATH
  12. )
  13. find_library(GDAL_LIBRARY_RELEASE
  14. NAMES gdal_i gdal
  15. NAMES_PER_DIR
  16. PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib"
  17. NO_DEFAULT_PATH
  18. )
  19. select_library_configurations(GDAL)
  20. if(NOT GDAL_INCLUDE_DIR OR NOT GDAL_LIBRARY)
  21. message(FATAL_ERROR "Installation of vcpkg port gdal is broken.")
  22. endif()
  23. set(GDAL_LIBRARY "${GDAL_LIBRARY}" CACHE STRING "")
  24. set(FindGDAL_SKIP_GDAL_CONFIG TRUE)
  25. _find_package(${ARGS})
  26. set(_gdal_dep_find_args "")
  27. if(";${ARGS};" MATCHES ";REQUIRED;")
  28. list(APPEND _gdal_dep_find_args "REQUIRED")
  29. endif()
  30. function(_gdal_add_dependency target package)
  31. find_package(${package} ${ARGN} ${_gdal_dep_find_args})
  32. if(${package}_FOUND)
  33. foreach(suffix IN ITEMS "" "-shared" "_shared" "-static" "_static" "-NOTFOUND")
  34. set(dependency "${target}${suffix}")
  35. if(TARGET ${dependency})
  36. break()
  37. endif()
  38. endforeach()
  39. if(NOT TARGET ${dependency})
  40. string(TOUPPER ${package} _gdal_deps_package)
  41. if(DEFINED ${_gdal_deps_package}_LIBRARIES)
  42. set(dependency ${${_gdal_deps_package}_LIBRARIES})
  43. elseif(DEFINED ${package}_LIBRARIES)
  44. set(dependency ${${package}_LIBRARIES})
  45. elseif(DEFINED ${_gdal_deps_package}_LIBRARY)
  46. set(dependency ${${_gdal_deps_package}_LIBRARY})
  47. elseif(DEFINED ${package}_LIBRARY)
  48. set(dependency ${${package}_LIBRARY})
  49. endif()
  50. endif()
  51. if(dependency)
  52. if(TARGET GDAL::GDAL) # CMake 3.14
  53. target_link_libraries(GDAL::GDAL INTERFACE ${dependency})
  54. endif()
  55. if(NOT GDAL_LIBRARIES STREQUAL "GDAL::GDAL")
  56. set(GDAL_LIBRARIES "${GDAL_LIBRARIES};${dependency}" PARENT_SCOPE)
  57. endif()
  58. else()
  59. message(WARNING "Did not find which libraries are exported by ${package}")
  60. set(GDAL_FOUND false PARENT_SCOPE)
  61. endif()
  62. else()
  63. set(GDAL_FOUND false PARENT_SCOPE)
  64. endif()
  65. endfunction()
  66. if(GDAL_FOUND)
  67. _gdal_add_dependency(cfitsio unofficial-cfitsio CONFIG)
  68. _gdal_add_dependency(CURL::libcurl CURL CONFIG)
  69. _gdal_add_dependency(expat::expat expat CONFIG)
  70. _gdal_add_dependency(GEOS::geos_c geos CONFIG)
  71. _gdal_add_dependency(GIF::GIF GIF)
  72. _gdal_add_dependency(hdf5::hdf5 hdf5 CONFIG)
  73. if(NOT WIN32)
  74. _gdal_add_dependency(json-c::json-c json-c CONFIG)
  75. endif()
  76. _gdal_add_dependency(geotiff_library geotiff CONFIG)
  77. _gdal_add_dependency(JPEG::JPEG JPEG)
  78. _gdal_add_dependency(liblzma::liblzma liblzma CONFIG)
  79. _gdal_add_dependency(png libpng CONFIG)
  80. _gdal_add_dependency(PostgreSQL::PostgreSQL PostgreSQL)
  81. _gdal_add_dependency(WebP::webp WebP CONFIG)
  82. _gdal_add_dependency(LibXml2::LibXml2 LibXml2)
  83. _gdal_add_dependency(netCDF::netcdf netCDF CONFIG)
  84. _gdal_add_dependency(openjp2 OpenJPEG CONFIG)
  85. _gdal_add_dependency(PROJ::proj PROJ4 CONFIG)
  86. _gdal_add_dependency(unofficial::sqlite3::sqlite3 unofficial-sqlite3 CONFIG)
  87. _gdal_add_dependency(TIFF::TIFF TIFF)
  88. _gdal_add_dependency(ZLIB::ZLIB ZLIB)
  89. _gdal_add_dependency(zstd::libzstd zstd CONFIG)
  90. list(FIND ARGS "REQUIRED" required)
  91. if(NOT GDAL_FOUND AND NOT required EQUAL "-1")
  92. message(FATAL_ERROR "Failed to find dependencies of GDAL")
  93. endif()
  94. endif()