Libraries.cmake 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # 在这里直接包含所有的库,工程可以根据所需的库进行链接
  2. #在外面使用时,只需要包含这个文件即可
  3. message(STATUS "系统: ${CMAKE_SYSTEM_NAME}")
  4. message(STATUS "编译器: ${CMAKE_CXX_COMPILER_ID}")
  5. message(STATUS "编译类型: ${CMAKE_BUILD_TYPE}")
  6. if(CMAKE_SIZEOF_VOID_P MATCHES 8)
  7. message(STATUS "系统位数: 64-bit")
  8. elseif(CMAKE_SIZEOF_VOID_P MATCHES 4)
  9. message(STATUS "系统位数: 32-bit")
  10. endif()
  11. #=========================================================
  12. #********************* 搜索所有的库 *********************
  13. #=========================================================
  14. # 这一段主要是搜索生成的标准开源库
  15. # fmt、spdlog、CURL等
  16. # fmt和spdlog的64位支持动态库和静态库,32位只支持静态库
  17. # spdlog设置 ENABLE_SPDLOG_STATIC_LIB = TRUE,使用静态库,否则使用动态库,默认使用动态库
  18. # CURL只支持动态库,debug版本的.cmake文件也经过修改,全部指向release版本的动态库,方便和LHHTTPAPI一起调用
  19. if(CMAKE_SYSTEM_NAME MATCHES "Windows")
  20. #spdlog和fmt区分位置,分为64位和32位,静态库和动态库,debug和release
  21. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  22. #64位的spdlog有两个版本,一个是静态库,一个是动态库
  23. if(CMAKE_SIZEOF_VOID_P MATCHES 8)
  24. #添加Curl库
  25. set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/CURL)
  26. #判断有没有设置静态库标志,64位默认使用动态库
  27. if(ENABLE_SPDLOG_STATIC_LIB)
  28. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static/lib/cmake/fmt)
  29. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static/lib/cmake/spdlog)
  30. else()
  31. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/fmt)
  32. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/spdlog)
  33. endif()
  34. #32位
  35. elseif(CMAKE_SIZEOF_VOID_P MATCHES 4)
  36. set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_32/lib/cmake/CURL)
  37. #fmt和spdlog的32位只有静态库
  38. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static_32/lib/cmake/fmt)
  39. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static_32/lib/cmake/spdlog)
  40. endif()
  41. #MSVC只有动态库,且不支持32位
  42. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  43. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/msvc2022/lib/cmake/fmt)
  44. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/msvc2022/lib/cmake/spdlog)
  45. endif()
  46. #Linux只有64位,动态库和静态库都可以选择
  47. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  48. message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
  49. #添加Curl库
  50. set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/CURL)
  51. set(hiredis_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/hiredis)
  52. if(ENABLE_SPDLOG_STATIC_LIB)
  53. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3_static/lib/cmake/fmt)
  54. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3_static/lib/cmake/spdlog)
  55. else()
  56. set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/fmt)
  57. set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/spdlog)
  58. endif()
  59. set(freetype_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/freetype)
  60. endif()
  61. #=========================================================
  62. #添加MODULE模式搜索其他库的路径,不是标准的开源库
  63. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/sm_dll)
  64. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/qmqtt)
  65. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHQLog)
  66. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHHTTPAPI)
  67. # list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/NetworkCurl)
  68. #搜索所有的库
  69. find_package(fmt REQUIRED)
  70. find_package(spdlog REQUIRED)
  71. #链接curl库,使用的是CURL::libcurl
  72. find_package(CURL REQUIRED)
  73. #hiredis库
  74. find_package(hiredis REQUIRED)
  75. #在Windows中可能有冲突的地方,直接指明路径
  76. # find_package(Freetype REQUIRED PATHS ${freetype_DIR})
  77. find_package(qmqtt REQUIRED)
  78. find_package(SM REQUIRED)
  79. #LHLog和LHHTTP使用动态加载的方式调用,在工程中不需要连接库,只需要包含头文件即可
  80. find_package(LHQLog REQUIRED)
  81. find_package(LHHTTPAPI REQUIRED)
  82. # find_package(CURL REQUIRED)
  83. #=========================================================
  84. #******************* 打印搜索到的信息 *******************
  85. #=========================================================
  86. #打印搜索到的信息
  87. message(STATUS "--------------------------------------------------")
  88. message(STATUS "fmt Found: ${fmt_FOUND}")
  89. message(STATUS "fmt Version: ${fmt_VERSION}")
  90. message(STATUS "--------------------------------------------------")
  91. message(STATUS "spdlog FOUND: ${spdlog_FOUND}")
  92. message(STATUS "spdlog Version: ${spdlog_VERSION}")
  93. message(STATUS "--------------------------------------------------")
  94. # message(STATUS "FreeType Found : ${Freetype_FOUND}")
  95. # message(STATUS "FreeType Version : ${Freetype_VERSION}")
  96. # message(STATUS "--------------------------------------------------")
  97. message(STATUS "qmqtt Found : ${qmqtt_FOUND}")
  98. message(STATUS "qmqtt Version : ${qmqtt_VERSION}")
  99. message(STATUS "--------------------------------------------------")
  100. message(STATUS "SM_LIBRARY FOUND: ${SM_FOUND}")
  101. message(STATUS "SM_LIBRARY Version: ${SM_VERSION}")
  102. message(STATUS "--------------------------------------------------")
  103. message(STATUS "LHQLog Found : ${LHQLog_FOUND}")
  104. message(STATUS "LHQLog Version : ${LHQLog_VERSION}")
  105. message(STATUS "--------------------------------------------------")
  106. message(STATUS "LHHTTPAPI Found : ${LHHTTPAPI_FOUND}")
  107. message(STATUS "LHHTTPAPI Version : ${LHHTTPAPI_VERSION}")
  108. message(STATUS "--------------------------------------------------")
  109. message(STATUS "CURL Found : ${CURL_FOUND}")
  110. message(STATUS "CURL Version : ${CURL_VERSION}")
  111. message(STATUS "--------------------------------------------------")
  112. message(STATUS "hiredis Found : ${hiredis_FOUND}")
  113. message(STATUS "hiredis Version : ${hiredis_VERSION}")
  114. message(STATUS "--------------------------------------------------")