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. message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
  26. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  27. if(QtVersion STREQUAL "5.12")
  28. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  29. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqttd.dll)
  30. else()
  31. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqtt.dll)
  32. endif()
  33. elseif(QtVersion STREQUAL "5.15")
  34. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  35. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/debug/Qt5Qmqtt.dll)
  36. else()
  37. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/release/Qt5Qmqtt.dll)
  38. endif()
  39. endif()
  40. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  41. message(STATUS "MSVC")
  42. if(QtVersion STREQUAL "5.12")
  43. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  44. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqttd.lib)
  45. else()
  46. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqtt.lib)
  47. endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
  48. elseif(QtVersion STREQUAL "5.15")
  49. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  50. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqttd.lib)
  51. else()
  52. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqtt.lib)
  53. endif()
  54. endif()
  55. endif()
  56. #添加Linux库
  57. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  58. message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
  59. if(QtVersion STREQUAL "5.12")
  60. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  61. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/debug/libQt5Qmqtt.so)
  62. else()
  63. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/release/libQt5Qmqtt.so)
  64. endif()
  65. elseif(QtVersion STREQUAL "5.15")
  66. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  67. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  68. else()
  69. set(qmqtt_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
  70. endif()
  71. endif()
  72. endif()
  73. # 3. 设置查找到了变量
  74. if(qmqtt_INCLUDE_DIR AND qmqtt_LIBRARY)
  75. set(qmqtt_FOUND TRUE)
  76. else()
  77. set(qmqtt_FOUND FALSE)
  78. endif()
  79. message(STATUS "qmqtt Version : ${qmqtt_VERSION}")
  80. message(STATUS "include : qmqtt_INCLUDE_DIR")
  81. message(STATUS "Library : qmqtt_LIBRARY")
  82. message(STATUS "---------------------------------")