FindCURL.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #CURL库
  2. message(STATUS "***** Find CURL Library *****")
  3. #寻找头文件
  4. find_path(CURL_INCLUDE_DIR
  5. NAMES curl/curl.h
  6. PATHS ${CMAKE_CURRENT_LIST_DIR}/include
  7. NO_DEFAULT_PATH
  8. )
  9. #查找库文件,需要判断操作系统,位数
  10. if(CMAKE_SYSTEM_NAME MATCHES "Windows")
  11. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  12. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  13. if(CMAKE_BUILD_TYPE MATCHES "Debug")
  14. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libcurl.dll)
  15. else()
  16. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3/libcurl.dll)
  17. endif()
  18. elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
  19. if(CMAKE_BUILD_TYPE MATCHES "Debug")
  20. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libcurl.dll)
  21. else()
  22. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/windows/gcc7.3_32/libcurl.dll)
  23. endif()
  24. endif()
  25. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  26. endif()
  27. #添加Linux版本
  28. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  29. if(CMAKE_BUILD_TYPE MATCHES "Debug")
  30. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libcurl.so)
  31. list(APPEND CURL_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libcurl.a)
  32. else()
  33. list(APPEND CURL_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libcurl.so)
  34. list(APPEND CURL_STATIC_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/linux/gcc8.3/libcurl.a)
  35. endif()
  36. endif()
  37. #设置查找到后的变量
  38. if(CURL_INCLUDE_DIR AND ( CURL_LIBRARY OR CURL_STATIC_LIBRARY) )
  39. set(CURL_FOUND TRUE)
  40. set(CURL_VERSION 7.88.1)
  41. if(CURL_INCLUDE_DIR AND CURL_LIBRARY AND CURL_STATIC_LIBRARY)
  42. message(STATUS "include : CURL_INCLUDE_DIR")
  43. message(STATUS "Library : CURL_LIBRARY")
  44. message(STATUS "Static Library : CURL_STATIC_LIBRARY")
  45. elseif(CURL_INCLUDE_DIR AND CURL_LIBRARY)
  46. message(STATUS "include : CURL_INCLUDE_DIR")
  47. message(STATUS "Library : CURL_LIBRARY")
  48. endif()
  49. message(STATUS "target_link_libraries(External::curl)")
  50. else()
  51. set(CURL_FOUND FALSE)
  52. endif()
  53. message(STATUS "CURL Found : ${CURL_FOUND}")
  54. message(STATUS "CURL Version : ${CURL_VERSION}")
  55. message(STATUS "--------------------------------------------------")
  56. #导入目标
  57. if(CURL_FOUND)
  58. if(NOT TARGET External::curl)
  59. add_library(External::curl UNKNOWN IMPORTED)
  60. #添加头文件
  61. set_target_properties(External::curl PROPERTIES
  62. INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIR}")
  63. #添加库文件
  64. set_target_properties(External::curl PROPERTIES
  65. IMPORTED_LOCATION "${CURL_LIBRARY}")
  66. #添加spdlog需要的依赖库
  67. # set_target_properties(External::curl PROPERTIES
  68. # INTERFACE_LINK_LIBRARIES "pthread")
  69. #添加源文件
  70. # set_target_properties(External::curl PROPERTIES
  71. # INTERFACE_SOURCES "${hiredis_SOURCES}")
  72. endif()
  73. endif()
  74. # 标记这些变量为高级变量
  75. mark_as_advanced(
  76. CURL_INCLUDE_DIR
  77. CURL_LIBRARY
  78. )