FindCURL.cmake 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #.rst:
  4. # FindCURL
  5. # --------
  6. #
  7. # Find the native CURL headers and libraries.
  8. #
  9. # IMPORTED Targets
  10. # ^^^^^^^^^^^^^^^^
  11. #
  12. # This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if
  13. # curl has been found.
  14. #
  15. # Result Variables
  16. # ^^^^^^^^^^^^^^^^
  17. #
  18. # This module defines the following variables:
  19. #
  20. # ``CURL_FOUND``
  21. # True if curl found.
  22. #
  23. # ``CURL_INCLUDE_DIRS``
  24. # where to find curl/curl.h, etc.
  25. #
  26. # ``CURL_LIBRARIES``
  27. # List of libraries when using curl.
  28. #
  29. # ``CURL_VERSION_STRING``
  30. # The version of curl found.
  31. # Look for the header file.
  32. find_path(CURL_INCLUDE_DIR NAMES curl/curl.h)
  33. mark_as_advanced(CURL_INCLUDE_DIR)
  34. # Look for the library (sorted from most current/relevant entry to least).
  35. find_library(CURL_LIBRARY NAMES
  36. curl
  37. # Windows MSVC prebuilts:
  38. curllib
  39. libcurl_imp
  40. curllib_static
  41. # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip):
  42. libcurl
  43. )
  44. mark_as_advanced(CURL_LIBRARY)
  45. if(CURL_INCLUDE_DIR)
  46. foreach(_curl_version_header curlver.h curl.h)
  47. if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}")
  48. file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"")
  49. string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}")
  50. unset(curl_version_str)
  51. break()
  52. endif()
  53. endforeach()
  54. endif()
  55. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  56. FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL
  57. REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
  58. VERSION_VAR CURL_VERSION_STRING)
  59. if(CURL_FOUND)
  60. set(CURL_LIBRARIES ${CURL_LIBRARY})
  61. set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
  62. if(NOT TARGET CURL::libcurl)
  63. add_library(CURL::libcurl UNKNOWN IMPORTED)
  64. set_target_properties(CURL::libcurl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}")
  65. set_property(TARGET CURL::libcurl APPEND PROPERTY IMPORTED_LOCATION "${CURL_LIBRARY}")
  66. endif()
  67. endif()