Libraries.cmake 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. else()
  19. message(STATUS "Qt 版本: Unknown")
  20. message(STATUS "如果库依赖Qt版本,将include(Libraries.cmake)放在find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)后面")
  21. endif()
  22. message(STATUS " ")
  23. message(STATUS "如果添加的是源文件,需要在路径后面添加/*.cpp,如:")
  24. message(STATUS "\${LHHTTPAPI_INCLUDE_DIRS}/*.cpp)")
  25. message(STATUS "==================================================")
  26. #=========================================================
  27. #********************* 搜索所有的库 *********************
  28. #=========================================================
  29. #在CMake中搜索库的方式有两种,CONFIG和MODULE模式
  30. #CONFIG模式搜索的是标准的开源库,MODULE模式搜索的是其他库
  31. #为了更好的跨编译器、跨平台兼容,所有的库都使用MODULE模式搜索,自己写.cmake文件
  32. #=========================================================
  33. #添加MODULE模式搜索其他库的路径,不是标准的开源库
  34. # list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/fmt)
  35. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/spdlog)
  36. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/sm_dll)
  37. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/qmqtt)
  38. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHQLog)
  39. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHHTTPAPI)
  40. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/OpenSSL-1.1.1)
  41. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/ssh2)
  42. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/hiredis)
  43. #添加CURL的路径,目前Linux 使用单独编译的,使用上面的OpenSSL库
  44. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/CURL)
  45. #链接FreeType库,目前只支持Windows
  46. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/FreeType)
  47. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/QXlsx)
  48. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/OpenGLWidget)
  49. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/VideoPlayer)
  50. #搜索所有的库
  51. # find_package(fmt REQUIRED)
  52. find_package(spdlog REQUIRED)
  53. #链接curl库,使用的是CURL::libcurl
  54. find_package(CURL REQUIRED)
  55. #在Windows中可能有冲突的地方,直接指明路径
  56. # find_package(Freetype REQUIRED PATHS ${freetype_DIR})
  57. find_package(qmqtt REQUIRED)
  58. find_package(SM REQUIRED)
  59. #LHLog和LHHTTP使用动态加载的方式调用,在工程中不需要连接库,只需要包含头文件即可
  60. find_package(LHQLog REQUIRED)
  61. find_package(LHHTTPAPI REQUIRED)
  62. find_package(QXlsx REQUIRED)
  63. #获取OpenGLWidget的api文件
  64. find_package(OpenGLWidget REQUIRED)
  65. find_package(VideoPlayer REQUIRED)
  66. #有些库缺少某些平台、编译器的库,所以这里也根据平台、编译器进行搜索
  67. if(CMAKE_SYSTEM_NAME MATCHES "Windows")
  68. find_package(FreeType REQUIRED)
  69. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  70. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  71. endif()
  72. #Linux只有64位,动态库和静态库都可以选择
  73. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  74. #链接OpenSSL-1.1.1库
  75. find_package(OpenSSL-1.1.1 REQUIRED)
  76. #链接ssh2库
  77. find_package(ssh2 REQUIRED)
  78. #hiredis库
  79. find_package(hiredis REQUIRED)
  80. endif()