|
|
@@ -1,163 +1,174 @@
|
|
|
-
|
|
|
-#这里需要区分Qt版本,因此要放到find_package(qt)之后
|
|
|
-
|
|
|
-message(STATUS "***** Find qmqtt.cmake *****")
|
|
|
-
|
|
|
-# 0. 定义qmqtt版本
|
|
|
-
|
|
|
-
|
|
|
-# 1. 指定头文件路径
|
|
|
-unset(QMQTT_INCLUDE_DIR CACHE)
|
|
|
-unset(QMQTT_LIBRARY CACHE)
|
|
|
-unset(INCLUDE_DIR CACHE)
|
|
|
-find_path(INCLUDE_DIR
|
|
|
- NAMES qmqtt.h
|
|
|
- PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
|
|
|
- NO_DEFAULT_PATH
|
|
|
-)
|
|
|
-
|
|
|
-list(APPEND QMQTT_INCLUDE_DIR ${INCLUDE_DIR})
|
|
|
-
|
|
|
-unset(INCLUDE_DIR CACHE)
|
|
|
-find_path(INCLUDE_DIR
|
|
|
- NAMES MQTTBase.h
|
|
|
- PATHS ${CMAKE_CURRENT_LIST_DIR}/mqttBase
|
|
|
- NO_DEFAULT_PATH
|
|
|
-)
|
|
|
-
|
|
|
-list(APPEND QMQTT_INCLUDE_DIR ${INCLUDE_DIR})
|
|
|
-
|
|
|
-
|
|
|
-#添加源文件
|
|
|
-unset(QMQTT_SOURCES CACHE)
|
|
|
-find_path(INCLUDE_DIR
|
|
|
- NAMES MQTTBase.cpp
|
|
|
- PATHS ${CMAKE_CURRENT_LIST_DIR}/mqttBase
|
|
|
- NO_DEFAULT_PATH
|
|
|
-)
|
|
|
-
|
|
|
-list(APPEND QMQTT_SOURCES ${INCLUDE_DIR}/MQTTBase.cpp)
|
|
|
-
|
|
|
-
|
|
|
-#区分Qt版本
|
|
|
-if(QT_VERSION_MAJOR EQUAL 5)
|
|
|
- # message(STATUS "----------------Qt Version : ${Qt5Core_VERSION}")
|
|
|
- if(${Qt5Core_VERSION} VERSION_LESS 5.15.0 AND ${Qt5Core_VERSION} VERSION_GREATER 5.12.0)
|
|
|
- set(QtVersion 5.12)
|
|
|
- elseif(${Qt5Core_VERSION} VERSION_GREATER_EQUAL 5.15.0)
|
|
|
- set(QtVersion 5.15)
|
|
|
- endif()
|
|
|
-
|
|
|
-elseif(QT_VERSION_MAJOR EQUAL 6)
|
|
|
- message(STATUS "Qt Version : ${Qt6Core_VERSION}")
|
|
|
- message(STATUS "qmqtt not support Qt6")
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
-# 2. 直接指定库文件,区分gcc,msvc,debug和release
|
|
|
-unset(QMQTT_LIBRARY CACHE)
|
|
|
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
|
- if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
|
- if(QtVersion STREQUAL "5.12")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqttd.dll)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqtt.dll)
|
|
|
- endif()
|
|
|
- elseif(QtVersion STREQUAL "5.15")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/debug/Qt5Qmqtt.dll)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/release/Qt5Qmqtt.dll)
|
|
|
- endif()
|
|
|
- endif()
|
|
|
- elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|
|
- # message(STATUS "MSVC")
|
|
|
- if(QtVersion STREQUAL "5.12")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqttd.lib)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqtt.lib)
|
|
|
- endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
-
|
|
|
- elseif(QtVersion STREQUAL "5.15")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqttd.lib)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqtt.lib)
|
|
|
- endif()
|
|
|
- endif()
|
|
|
- endif()
|
|
|
-#添加Linux库
|
|
|
-elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
|
- # message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
|
|
|
- if(QtVersion STREQUAL "5.12")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/debug/libQt5Qmqtt.so)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/release/libQt5Qmqtt.so)
|
|
|
- endif()
|
|
|
- elseif(QtVersion STREQUAL "5.15")
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
|
|
|
- else()
|
|
|
- list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
|
|
|
- endif()
|
|
|
- endif()
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
-# message("Include: " ${QMQTT_INCLUDE_DIR})
|
|
|
-# message("Library: " ${QMQTT_LIBRARY})
|
|
|
-# 3. 设置查找到了变量
|
|
|
-if(QMQTT_INCLUDE_DIR AND QMQTT_LIBRARY)
|
|
|
- set(QMQTT_FOUND TRUE)
|
|
|
- set(QMQTT_VERSION 1.0.3)
|
|
|
-
|
|
|
- # message(STATUS "qmqtt Version : ${QMQTT_VERSION}")
|
|
|
- # message(STATUS "include : QMQTT_INCLUDE_DIR")
|
|
|
- # message(STATUS "Library : QMQTT_LIBRARY")
|
|
|
- # message(STATUS "Sources : QMQTT_SOURCES")
|
|
|
-
|
|
|
- message(STATUS "target_link_libraries(YourTarget PRIVATE External::qmqtt)")
|
|
|
-else()
|
|
|
- set(QMQTT_FOUND FALSE)
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
-message(STATUS "qmqtt Found : ${QMQTT_FOUND}")
|
|
|
-message(STATUS "qmqtt Version : ${QMQTT_VERSION}")
|
|
|
-message(STATUS "--------------------------------------------------")
|
|
|
-
|
|
|
-
|
|
|
-#导入目标
|
|
|
-if(QMQTT_FOUND)
|
|
|
- if(NOT TARGET External::qmqtt)
|
|
|
- add_library(External::qmqtt UNKNOWN IMPORTED)
|
|
|
- #添加头文件
|
|
|
- set_target_properties(External::qmqtt PROPERTIES
|
|
|
- INTERFACE_INCLUDE_DIRECTORIES "${QMQTT_INCLUDE_DIR}")
|
|
|
-
|
|
|
- #添加库文件
|
|
|
-
|
|
|
- set_target_properties(External::qmqtt PROPERTIES
|
|
|
- IMPORTED_LOCATION "${QMQTT_LIBRARY}")
|
|
|
- #添加spdlog需要的依赖库
|
|
|
- # set_target_properties(External::qmqtt PROPERTIES
|
|
|
- # INTERFACE_LINK_LIBRARIES "pthread")
|
|
|
-
|
|
|
-
|
|
|
- #添加源文件
|
|
|
- set_target_properties(External::qmqtt PROPERTIES
|
|
|
- INTERFACE_SOURCES "${QMQTT_SOURCES}")
|
|
|
- endif()
|
|
|
-endif()
|
|
|
-
|
|
|
-# 标记这些变量为高级变量
|
|
|
-mark_as_advanced(
|
|
|
- QMQTT_INCLUDE_DIR
|
|
|
- QMQTT_LIBRARY
|
|
|
- QMQTT_SOURCES
|
|
|
-)
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+#这里需要区分Qt版本,因此要放到find_package(qt)之后
|
|
|
+
|
|
|
+message(STATUS "***** Find qmqtt.cmake *****")
|
|
|
+
|
|
|
+# 0. 定义qmqtt版本
|
|
|
+
|
|
|
+
|
|
|
+# 1. 指定头文件路径
|
|
|
+unset(QMQTT_INCLUDE_DIR CACHE)
|
|
|
+unset(QMQTT_LIBRARY CACHE)
|
|
|
+unset(INCLUDE_DIR CACHE)
|
|
|
+find_path(INCLUDE_DIR
|
|
|
+ NAMES qmqtt.h
|
|
|
+ PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
|
|
|
+ NO_DEFAULT_PATH
|
|
|
+)
|
|
|
+
|
|
|
+list(APPEND QMQTT_INCLUDE_DIR ${INCLUDE_DIR})
|
|
|
+
|
|
|
+unset(INCLUDE_DIR CACHE)
|
|
|
+find_path(INCLUDE_DIR
|
|
|
+ NAMES MQTTBase.h
|
|
|
+ PATHS ${CMAKE_CURRENT_LIST_DIR}/mqttBase
|
|
|
+ NO_DEFAULT_PATH
|
|
|
+)
|
|
|
+
|
|
|
+list(APPEND QMQTT_INCLUDE_DIR ${INCLUDE_DIR})
|
|
|
+
|
|
|
+
|
|
|
+#添加源文件
|
|
|
+unset(QMQTT_SOURCES CACHE)
|
|
|
+find_path(INCLUDE_DIR
|
|
|
+ NAMES MQTTBase.cpp
|
|
|
+ PATHS ${CMAKE_CURRENT_LIST_DIR}/mqttBase
|
|
|
+ NO_DEFAULT_PATH
|
|
|
+)
|
|
|
+
|
|
|
+list(APPEND QMQTT_SOURCES ${INCLUDE_DIR}/MQTTBase.cpp)
|
|
|
+
|
|
|
+
|
|
|
+#区分Qt版本
|
|
|
+if(QT_VERSION_MAJOR EQUAL 5)
|
|
|
+ # message(STATUS "----------------Qt Version : ${Qt5Core_VERSION}")
|
|
|
+ if(${Qt5Core_VERSION} VERSION_LESS 5.15.0 AND ${Qt5Core_VERSION} VERSION_GREATER 5.12.0)
|
|
|
+ set(QtVersion 5.12)
|
|
|
+ elseif(${Qt5Core_VERSION} VERSION_GREATER_EQUAL 5.15.0)
|
|
|
+ set(QtVersion 5.15)
|
|
|
+ endif()
|
|
|
+
|
|
|
+elseif(QT_VERSION_MAJOR EQUAL 6)
|
|
|
+ message(STATUS "Qt Version : ${Qt6Core_VERSION}")
|
|
|
+ message(STATUS "qmqtt not support Qt6")
|
|
|
+endif()
|
|
|
+
|
|
|
+
|
|
|
+# 2. 直接指定库文件,区分gcc,msvc,debug和release
|
|
|
+unset(QMQTT_LIBRARY CACHE)
|
|
|
+if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
|
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
|
+ if(QtVersion STREQUAL "5.12")
|
|
|
+ #区分64位和32位
|
|
|
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
+ # message(STATUS "GCC 64bit")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqttd.dll)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.12.12/Qt5Qmqtt.dll)
|
|
|
+ endif()
|
|
|
+ else()
|
|
|
+ # message(STATUS "GCC 32bit")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc73_32/Qt5Qmqttd.dll)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc73_32/Qt5Qmqtt.dll)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ elseif(QtVersion STREQUAL "5.15")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/debug/Qt5Qmqtt.dll)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/gcc/5.15.2/release/Qt5Qmqtt.dll)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|
|
+ # message(STATUS "MSVC")
|
|
|
+ if(QtVersion STREQUAL "5.12")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqttd.lib)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.12.12/Qt5Qmqtt.lib)
|
|
|
+ endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+
|
|
|
+ elseif(QtVersion STREQUAL "5.15")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqttd.lib)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/msvc/5.15.2/Qt5Qmqtt.lib)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+#添加Linux库
|
|
|
+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
|
+ # message(STATUS "Using ${CMAKE_SYSTEM_NAME} System")
|
|
|
+ if(QtVersion STREQUAL "5.12")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/debug/libQt5Qmqtt.so)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.12.12/release/libQt5Qmqtt.so)
|
|
|
+ endif()
|
|
|
+ elseif(QtVersion STREQUAL "5.15")
|
|
|
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
|
|
|
+ else()
|
|
|
+ list(APPEND QMQTT_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/lib/linux_gcc8.3/5.15.14/debug/libQt5Qmqtt.so)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+
|
|
|
+# message("Include: " ${QMQTT_INCLUDE_DIR})
|
|
|
+# message("Library: " ${QMQTT_LIBRARY})
|
|
|
+# 3. 设置查找到了变量
|
|
|
+if(QMQTT_INCLUDE_DIR AND QMQTT_LIBRARY)
|
|
|
+ set(QMQTT_FOUND TRUE)
|
|
|
+ set(QMQTT_VERSION 1.0.3)
|
|
|
+
|
|
|
+ # message(STATUS "qmqtt Version : ${QMQTT_VERSION}")
|
|
|
+ # message(STATUS "include : QMQTT_INCLUDE_DIR")
|
|
|
+ # message(STATUS "Library : QMQTT_LIBRARY")
|
|
|
+ # message(STATUS "Sources : QMQTT_SOURCES")
|
|
|
+
|
|
|
+ message(STATUS "target_link_libraries(YourTarget PRIVATE External::qmqtt)")
|
|
|
+else()
|
|
|
+ set(QMQTT_FOUND FALSE)
|
|
|
+endif()
|
|
|
+
|
|
|
+
|
|
|
+message(STATUS "qmqtt Found : ${QMQTT_FOUND}")
|
|
|
+message(STATUS "qmqtt Version : ${QMQTT_VERSION}")
|
|
|
+message(STATUS "--------------------------------------------------")
|
|
|
+
|
|
|
+
|
|
|
+#导入目标
|
|
|
+if(QMQTT_FOUND)
|
|
|
+ if(NOT TARGET External::qmqtt)
|
|
|
+ add_library(External::qmqtt UNKNOWN IMPORTED)
|
|
|
+ #添加头文件
|
|
|
+ set_target_properties(External::qmqtt PROPERTIES
|
|
|
+ INTERFACE_INCLUDE_DIRECTORIES "${QMQTT_INCLUDE_DIR}")
|
|
|
+
|
|
|
+ #添加库文件
|
|
|
+
|
|
|
+ set_target_properties(External::qmqtt PROPERTIES
|
|
|
+ IMPORTED_LOCATION "${QMQTT_LIBRARY}")
|
|
|
+ #添加spdlog需要的依赖库
|
|
|
+ # set_target_properties(External::qmqtt PROPERTIES
|
|
|
+ # INTERFACE_LINK_LIBRARIES "pthread")
|
|
|
+
|
|
|
+
|
|
|
+ #添加源文件
|
|
|
+ set_target_properties(External::qmqtt PROPERTIES
|
|
|
+ INTERFACE_SOURCES "${QMQTT_SOURCES}")
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+# 标记这些变量为高级变量
|
|
|
+mark_as_advanced(
|
|
|
+ QMQTT_INCLUDE_DIR
|
|
|
+ QMQTT_LIBRARY
|
|
|
+ QMQTT_SOURCES
|
|
|
+)
|
|
|
+
|
|
|
+
|