Qt5QmqttConfig.cmake 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. if (CMAKE_VERSION VERSION_LESS 3.1.0)
  2. message(FATAL_ERROR "Qt 5 Qmqtt module requires at least CMake version 3.1.0")
  3. endif()
  4. get_filename_component(_qt5Qmqtt_install_prefix "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
  5. # For backwards compatibility only. Use Qt5Qmqtt_VERSION instead.
  6. set(Qt5Qmqtt_VERSION_STRING 1.0.3)
  7. set(Qt5Qmqtt_LIBRARIES Qt5::Qmqtt)
  8. macro(_qt5_Qmqtt_check_file_exists file)
  9. if(NOT EXISTS "${file}" )
  10. message(FATAL_ERROR "The imported target \"Qt5::Qmqtt\" references the file
  11. \"${file}\"
  12. but this file does not exist. Possible reasons include:
  13. * The file was deleted, renamed, or moved to another location.
  14. * An install or uninstall procedure did not complete successfully.
  15. * The installation package was faulty and contained
  16. \"${CMAKE_CURRENT_LIST_FILE}\"
  17. but not all the files it references.
  18. ")
  19. endif()
  20. endmacro()
  21. macro(_populate_Qmqtt_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION)
  22. set_property(TARGET Qt5::Qmqtt APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
  23. set(imported_location "${_qt5Qmqtt_install_prefix}/bin/${LIB_LOCATION}")
  24. _qt5_Qmqtt_check_file_exists(${imported_location})
  25. set_target_properties(Qt5::Qmqtt PROPERTIES
  26. "INTERFACE_LINK_LIBRARIES" "${_Qt5Qmqtt_LIB_DEPENDENCIES}"
  27. "IMPORTED_LOCATION_${Configuration}" ${imported_location}
  28. # For backward compatibility with CMake < 2.8.12
  29. "IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}" "${_Qt5Qmqtt_LIB_DEPENDENCIES}"
  30. )
  31. set(imported_implib "${_qt5Qmqtt_install_prefix}/lib/${IMPLIB_LOCATION}")
  32. _qt5_Qmqtt_check_file_exists(${imported_implib})
  33. if(NOT "${IMPLIB_LOCATION}" STREQUAL "")
  34. set_target_properties(Qt5::Qmqtt PROPERTIES
  35. "IMPORTED_IMPLIB_${Configuration}" ${imported_implib}
  36. )
  37. endif()
  38. endmacro()
  39. if (NOT TARGET Qt5::Qmqtt)
  40. set(_Qt5Qmqtt_OWN_INCLUDE_DIRS "${_qt5Qmqtt_install_prefix}/include/" "${_qt5Qmqtt_install_prefix}/include/QtQmqtt")
  41. set(Qt5Qmqtt_PRIVATE_INCLUDE_DIRS "")
  42. include("${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake" OPTIONAL)
  43. foreach(_dir ${_Qt5Qmqtt_OWN_INCLUDE_DIRS})
  44. _qt5_Qmqtt_check_file_exists(${_dir})
  45. endforeach()
  46. # Only check existence of private includes if the Private component is
  47. # specified.
  48. list(FIND Qt5Qmqtt_FIND_COMPONENTS Private _check_private)
  49. if (NOT _check_private STREQUAL -1)
  50. foreach(_dir ${Qt5Qmqtt_PRIVATE_INCLUDE_DIRS})
  51. _qt5_Qmqtt_check_file_exists(${_dir})
  52. endforeach()
  53. endif()
  54. set(Qt5Qmqtt_INCLUDE_DIRS ${_Qt5Qmqtt_OWN_INCLUDE_DIRS})
  55. set(Qt5Qmqtt_DEFINITIONS -DQT_QMQTT_LIB)
  56. set(Qt5Qmqtt_COMPILE_DEFINITIONS QT_QMQTT_LIB)
  57. set(_Qt5Qmqtt_MODULE_DEPENDENCIES "Network;Core")
  58. set(Qt5Qmqtt_OWN_PRIVATE_INCLUDE_DIRS ${Qt5Qmqtt_PRIVATE_INCLUDE_DIRS})
  59. set(_Qt5Qmqtt_FIND_DEPENDENCIES_REQUIRED)
  60. if (Qt5Qmqtt_FIND_REQUIRED)
  61. set(_Qt5Qmqtt_FIND_DEPENDENCIES_REQUIRED REQUIRED)
  62. endif()
  63. set(_Qt5Qmqtt_FIND_DEPENDENCIES_QUIET)
  64. if (Qt5Qmqtt_FIND_QUIETLY)
  65. set(_Qt5Qmqtt_DEPENDENCIES_FIND_QUIET QUIET)
  66. endif()
  67. set(_Qt5Qmqtt_FIND_VERSION_EXACT)
  68. if (Qt5Qmqtt_FIND_VERSION_EXACT)
  69. set(_Qt5Qmqtt_FIND_VERSION_EXACT EXACT)
  70. endif()
  71. set(Qt5Qmqtt_EXECUTABLE_COMPILE_FLAGS "")
  72. foreach(_module_dep ${_Qt5Qmqtt_MODULE_DEPENDENCIES})
  73. if (NOT Qt5${_module_dep}_FOUND)
  74. find_package(Qt5${_module_dep}
  75. 1.0.3 ${_Qt5Qmqtt_FIND_VERSION_EXACT}
  76. ${_Qt5Qmqtt_DEPENDENCIES_FIND_QUIET}
  77. ${_Qt5Qmqtt_FIND_DEPENDENCIES_REQUIRED}
  78. PATHS "${CMAKE_CURRENT_LIST_DIR}/.." NO_DEFAULT_PATH
  79. )
  80. endif()
  81. if (NOT Qt5${_module_dep}_FOUND)
  82. set(Qt5Qmqtt_FOUND False)
  83. return()
  84. endif()
  85. list(APPEND Qt5Qmqtt_INCLUDE_DIRS "${Qt5${_module_dep}_INCLUDE_DIRS}")
  86. list(APPEND Qt5Qmqtt_PRIVATE_INCLUDE_DIRS "${Qt5${_module_dep}_PRIVATE_INCLUDE_DIRS}")
  87. list(APPEND Qt5Qmqtt_DEFINITIONS ${Qt5${_module_dep}_DEFINITIONS})
  88. list(APPEND Qt5Qmqtt_COMPILE_DEFINITIONS ${Qt5${_module_dep}_COMPILE_DEFINITIONS})
  89. list(APPEND Qt5Qmqtt_EXECUTABLE_COMPILE_FLAGS ${Qt5${_module_dep}_EXECUTABLE_COMPILE_FLAGS})
  90. endforeach()
  91. list(REMOVE_DUPLICATES Qt5Qmqtt_INCLUDE_DIRS)
  92. list(REMOVE_DUPLICATES Qt5Qmqtt_PRIVATE_INCLUDE_DIRS)
  93. list(REMOVE_DUPLICATES Qt5Qmqtt_DEFINITIONS)
  94. list(REMOVE_DUPLICATES Qt5Qmqtt_COMPILE_DEFINITIONS)
  95. list(REMOVE_DUPLICATES Qt5Qmqtt_EXECUTABLE_COMPILE_FLAGS)
  96. set(_Qt5Qmqtt_LIB_DEPENDENCIES "Qt5::Network;Qt5::Core")
  97. add_library(Qt5::Qmqtt SHARED IMPORTED)
  98. set_property(TARGET Qt5::Qmqtt PROPERTY
  99. INTERFACE_INCLUDE_DIRECTORIES ${_Qt5Qmqtt_OWN_INCLUDE_DIRS})
  100. set_property(TARGET Qt5::Qmqtt PROPERTY
  101. INTERFACE_COMPILE_DEFINITIONS QT_QMQTT_LIB)
  102. set_property(TARGET Qt5::Qmqtt PROPERTY INTERFACE_QT_ENABLED_FEATURES )
  103. set_property(TARGET Qt5::Qmqtt PROPERTY INTERFACE_QT_DISABLED_FEATURES )
  104. set(_Qt5Qmqtt_PRIVATE_DIRS_EXIST TRUE)
  105. foreach (_Qt5Qmqtt_PRIVATE_DIR ${Qt5Qmqtt_OWN_PRIVATE_INCLUDE_DIRS})
  106. if (NOT EXISTS ${_Qt5Qmqtt_PRIVATE_DIR})
  107. set(_Qt5Qmqtt_PRIVATE_DIRS_EXIST FALSE)
  108. endif()
  109. endforeach()
  110. if (_Qt5Qmqtt_PRIVATE_DIRS_EXIST)
  111. add_library(Qt5::QmqttPrivate INTERFACE IMPORTED)
  112. set_property(TARGET Qt5::QmqttPrivate PROPERTY
  113. INTERFACE_INCLUDE_DIRECTORIES ${Qt5Qmqtt_OWN_PRIVATE_INCLUDE_DIRS}
  114. )
  115. set(_Qt5Qmqtt_PRIVATEDEPS)
  116. foreach(dep ${_Qt5Qmqtt_LIB_DEPENDENCIES})
  117. if (TARGET ${dep}Private)
  118. list(APPEND _Qt5Qmqtt_PRIVATEDEPS ${dep}Private)
  119. endif()
  120. endforeach()
  121. set_property(TARGET Qt5::QmqttPrivate PROPERTY
  122. INTERFACE_LINK_LIBRARIES Qt5::Qmqtt ${_Qt5Qmqtt_PRIVATEDEPS}
  123. )
  124. endif()
  125. _populate_Qmqtt_target_properties(RELEASE "Qt5Qmqtt.dll" "Qt5Qmqtt.lib" )
  126. _populate_Qmqtt_target_properties(DEBUG "Qt5Qmqttd.dll" "Qt5Qmqttd.lib" )
  127. file(GLOB pluginTargets "${CMAKE_CURRENT_LIST_DIR}/Qt5Qmqtt_*Plugin.cmake")
  128. macro(_populate_Qmqtt_plugin_properties Plugin Configuration PLUGIN_LOCATION)
  129. set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration})
  130. set(imported_location "${_qt5Qmqtt_install_prefix}/plugins/${PLUGIN_LOCATION}")
  131. _qt5_Qmqtt_check_file_exists(${imported_location})
  132. set_target_properties(Qt5::${Plugin} PROPERTIES
  133. "IMPORTED_LOCATION_${Configuration}" ${imported_location}
  134. )
  135. endmacro()
  136. if (pluginTargets)
  137. foreach(pluginTarget ${pluginTargets})
  138. include(${pluginTarget})
  139. endforeach()
  140. endif()
  141. _qt5_Qmqtt_check_file_exists("${CMAKE_CURRENT_LIST_DIR}/Qt5QmqttConfigVersion.cmake")
  142. endif()