Findqmqtt.cmake 3.8 KB

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