Findqmqtt.cmake 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #这里需要区分Qt版本,因此要放到find_package(qt)之后
  2. message(STATUS "***** Find qmqtt.cmake *****")
  3. # 0. 定义qmqtt版本
  4. # 1. 指定头文件路径
  5. find_path(qmqtt_INCLUDE_DIR
  6. NAMES qmqtt.h
  7. PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
  8. NO_DEFAULT_PATH
  9. )
  10. #区分Qt版本
  11. if(QT_VERSION_MAJOR EQUAL 5)
  12. # message(STATUS "----------------Qt Version : ${Qt5Core_VERSION}")
  13. if(${Qt5Core_VERSION} VERSION_LESS 5.15.0 AND ${Qt5Core_VERSION} VERSION_GREATER 5.12.0)
  14. set(QtVersion 5.12)
  15. elseif(${Qt5Core_VERSION} VERSION_GREATER_EQUAL 5.15.0)
  16. set(QtVersion 5.15)
  17. endif()
  18. elseif(QT_VERSION_MAJOR EQUAL 6)
  19. message(STATUS "Qt Version : ${Qt6Core_VERSION}")
  20. message(STATUS "qmqtt not support Qt6")
  21. endif()
  22. # 2. 直接指定库文件,区分gcc,msvc,debug和release
  23. unset(qmqtt_LIBRARY CACHE)
  24. if(CMAKE_SYSTEM_NAME MATCHES "Windows")
  25. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  26. if(QtVersion STREQUAL "5.12")
  27. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  28. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqttd.dll)
  29. else()
  30. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqtt.dll)
  31. endif()
  32. elseif(QtVersion STREQUAL "5.15")
  33. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  34. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/debug/Qt5Qmqtt.dll)
  35. else()
  36. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/release/Qt5Qmqtt.dll)
  37. endif()
  38. endif()
  39. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  40. # message(STATUS "MSVC")
  41. if(QtVersion STREQUAL "5.12")
  42. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  43. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqttd.lib)
  44. else()
  45. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqtt.lib)
  46. endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
  47. elseif(QtVersion STREQUAL "5.15")
  48. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  49. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqttd.lib)
  50. else()
  51. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqtt.lib)
  52. endif()
  53. endif()
  54. endif()
  55. #添加Linux库
  56. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  57. # message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
  58. if(QtVersion STREQUAL "5.12")
  59. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  60. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/debug/libQt5Qmqtt.so)
  61. else()
  62. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/release/libQt5Qmqtt.so)
  63. endif()
  64. elseif(QtVersion STREQUAL "5.15")
  65. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  66. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  67. else()
  68. list(APPEND qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  69. endif()
  70. endif()
  71. endif()
  72. # message("Include: " ${qmqtt_INCLUDE_DIR})
  73. # message("Library: " ${qmqtt_LIBRARY})
  74. # 3. 设置查找到了变量
  75. if(qmqtt_INCLUDE_DIR AND qmqtt_LIBRARY)
  76. set(qmqtt_FOUND TRUE)
  77. set(qmqtt_VERSION 1.0.3)
  78. # message(STATUS "qmqtt Version : ${qmqtt_VERSION}")
  79. message(STATUS "include : qmqtt_INCLUDE_DIR")
  80. message(STATUS "Library : qmqtt_LIBRARY")
  81. else()
  82. set(qmqtt_FOUND FALSE)
  83. endif()
  84. message(STATUS "---------------------------------")