Libraries.cmake 7.8 KB

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