Findqmqtt.cmake 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #这里需要区分Qt版本,因此要放到find_package(qt)之后
  2. message(STATUS "***** Find qmqtt.cmake *****")
  3. # 0. 定义qmqtt版本
  4. set(qmqtt_VERSION 1.0.3)
  5. # 1. 指定头文件路径
  6. find_path(qmqtt_INCLUDE_DIR
  7. NAMES qmqtt.h
  8. PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
  9. NO_DEFAULT_PATH
  10. )
  11. #区分Qt版本
  12. if(Qt5Core_FOUND)
  13. # message(STATUS "Qt Version : ${Qt5Core_VERSION}")
  14. if(${Qt5Core_VERSION} VERSION_LESS 5.15.0 AND ${Qt5Core_VERSION} VERSION_GREATER 5.12.0)
  15. set(QtVersion 5.12)
  16. elseif(${Qt5Core_VERSION} VERSION_GREATER_EQUAL 5.15.0)
  17. set(QtVersion 5.15)
  18. endif()
  19. elseif(Qt6Core_FOUND)
  20. message(STATUS "Qt Version : ${Qt6Core_VERSION}")
  21. message(STATUS "qmqtt not support Qt6")
  22. endif()
  23. # 2. 直接指定库文件,区分gcc,msvc,debug和release
  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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqttd.dll)
  29. else()
  30. set(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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/debug/Qt5Qmqtt.dll)
  35. else()
  36. set(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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqttd.lib)
  44. else()
  45. set(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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqttd.lib)
  50. else()
  51. set(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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/debug/libQt5Qmqtt.so)
  61. else()
  62. set(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. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  67. else()
  68. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  69. endif()
  70. endif()
  71. endif()
  72. # 3. 设置查找到了变量
  73. if(qmqtt_INCLUDE_DIR AND qmqtt_LIBRARY)
  74. set(qmqtt_FOUND TRUE)
  75. # message(STATUS "qmqtt Version : ${qmqtt_VERSION}")
  76. message(STATUS "include : qmqtt_INCLUDE_DIR")
  77. message(STATUS "Library : qmqtt_LIBRARY")
  78. else()
  79. set(qmqtt_FOUND FALSE)
  80. endif()
  81. message(STATUS "---------------------------------")