vcpkg-cmake-wrapper.cmake 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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(FindGDAL_SKIP_GDAL_CONFIG TRUE)
  24. _find_package(${ARGS})
  25. set(_gdal_dep_find_args "")
  26. if(";${ARGS};" MATCHES ";REQUIRED;")
  27. list(APPEND _gdal_dep_find_args "REQUIRED")
  28. endif()
  29. function(_gdal_add_dependency target package)
  30. find_package(${package} ${ARGN} ${_gdal_dep_find_args})
  31. if(${package}_FOUND)
  32. foreach(suffix IN ITEMS "" "-shared" "_shared" "-static" "_static" "-NOTFOUND")
  33. set(dependency "${target}${suffix}")
  34. if(TARGET ${dependency})
  35. break()
  36. endif()
  37. endforeach()
  38. if(NOT TARGET ${dependency})
  39. string(TOUPPER ${package} _gdal_deps_package)
  40. if(DEFINED ${_gdal_deps_package}_LIBRARIES)
  41. set(dependency ${${_gdal_deps_package}_LIBRARIES})
  42. elseif(DEFINED ${package}_LIBRARIES)
  43. set(dependency ${${package}_LIBRARIES})
  44. elseif(DEFINED ${_gdal_deps_package}_LIBRARY)
  45. set(dependency ${${_gdal_deps_package}_LIBRARY})
  46. elseif(DEFINED ${package}_LIBRARY)
  47. set(dependency ${${package}_LIBRARY})
  48. endif()
  49. endif()
  50. if(dependency)
  51. if(TARGET GDAL::GDAL) # CMake 3.14
  52. target_link_libraries(GDAL::GDAL INTERFACE ${dependency})
  53. endif()
  54. if(NOT GDAL_LIBRARIES STREQUAL "GDAL::GDAL")
  55. set(GDAL_LIBRARIES "${GDAL_LIBRARIES};${dependency}" PARENT_SCOPE)
  56. endif()
  57. else()
  58. message(WARNING "Did not find which libraries are exported by ${package}")
  59. set(GDAL_FOUND false PARENT_SCOPE)
  60. endif()
  61. else()
  62. set(GDAL_FOUND false PARENT_SCOPE)
  63. endif()
  64. endfunction()
  65. if(GDAL_FOUND)
  66. _gdal_add_dependency(cfitsio unofficial-cfitsio CONFIG)
  67. _gdal_add_dependency(CURL::libcurl CURL CONFIG)
  68. _gdal_add_dependency(expat::expat expat CONFIG)
  69. _gdal_add_dependency(GEOS::geos_c geos CONFIG)
  70. _gdal_add_dependency(GIF::GIF GIF)
  71. _gdal_add_dependency(hdf5::hdf5 hdf5 CONFIG)
  72. if(NOT WIN32)
  73. _gdal_add_dependency(json-c::json-c json-c CONFIG)
  74. endif()
  75. _gdal_add_dependency(geotiff_library geotiff CONFIG)
  76. _gdal_add_dependency(JPEG::JPEG JPEG)
  77. _gdal_add_dependency(liblzma::liblzma liblzma CONFIG)
  78. _gdal_add_dependency(png libpng CONFIG)
  79. _gdal_add_dependency(PostgreSQL::PostgreSQL PostgreSQL)
  80. _gdal_add_dependency(WebP::webp WebP CONFIG)
  81. _gdal_add_dependency(LibXml2::LibXml2 LibXml2)
  82. _gdal_add_dependency(netCDF::netcdf netCDF CONFIG)
  83. _gdal_add_dependency(openjp2 OpenJPEG CONFIG)
  84. _gdal_add_dependency(PROJ::proj PROJ4 CONFIG)
  85. _gdal_add_dependency(unofficial::sqlite3::sqlite3 unofficial-sqlite3 CONFIG)
  86. _gdal_add_dependency(TIFF::TIFF TIFF)
  87. _gdal_add_dependency(ZLIB::ZLIB ZLIB)
  88. _gdal_add_dependency(zstd::libzstd zstd CONFIG)
  89. list(FIND ARGS "REQUIRED" required)
  90. if(NOT GDAL_FOUND AND NOT required EQUAL "-1")
  91. message(FATAL_ERROR "Failed to find dependencies of GDAL")
  92. endif()
  93. endif()