diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2018-10-17 16:03:28 -0400 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-08-12 18:23:58 +0200 |
commit | 63d9cd17d01765f02ede5050c40a554cefa50744 (patch) | |
tree | 4e4de830a06bbb098150b9bc1e9d1cf253d3eb95 /mkspecs | |
parent | ef74730a59fcfd4fff5b719c0310e817737e0efb (diff) |
CMake: Add support for auto-importing plugins in CMake
This commit adds transitive dependencies to the plugins, so that a
sane set of default plugins get auto-imported when linking against a
module. It also provides a new function, qt5_import_plugins(), which
allows you to override the set of plugins that get imported. The decision
of whether or not to import a specific plugin is based on several custom
target properties and a very clever generator expression.
Note that this change only imports plugins on static Qt builds. It
does nothing on shared Qt builds, as the shared libraries already have
their own plugin import mechanism.
[ChangeLog][CMake] Added ability to auto-import non-qml plugins on
CMake builds
Task-number: QTBUG-38913
Task-number: QTBUG-76562
Change-Id: I2d6c8908b521cf6ba1ebbbc33a87cb7ddd9935cf
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/create_cmake.prf | 94 | ||||
-rw-r--r-- | mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in | 35 | ||||
-rw-r--r-- | mkspecs/features/data/cmake/Qt5ImportPlugin.cpp.in | 2 | ||||
-rw-r--r-- | mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in | 95 |
4 files changed, 194 insertions, 32 deletions
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf index 376a7ded5d..e88d6175a4 100644 --- a/mkspecs/features/create_cmake.prf +++ b/mkspecs/features/create_cmake.prf @@ -160,60 +160,95 @@ debug_and_release { } contains(CONFIG, plugin) { - !isEmpty(PLUGIN_EXTENDS):!equals(PLUGIN_EXTENDS, -) { - count(PLUGIN_EXTENDS, 1, greaterThan): \ - error("Plugin declares to extend multiple modules. We don't handle that ...") - PLUGIN_MODULE_NAME = $$PLUGIN_EXTENDS + equals(PLUGIN_EXTENDS, -) { + CMAKE_PLUGIN_EXTENDS = - } else { - PLUGIN_MODULE_NAME = - for (mod, QT_MODULES) { - contains(QT.$${mod}.plugin_types, $$PLUGIN_TYPE) { - !isEmpty(PLUGIN_MODULE_NAME): \ - error("Multiple modules claim plugin type '$$PLUGIN_TYPE' ($$mod, in addition to $$PLUGIN_MODULE_NAME)") - PLUGIN_MODULE_NAME = $$mod - break() - } + list_plugin_extends = + for (p, PLUGIN_EXTENDS) { + m = $$cmakeModuleName($$p) + list_plugin_extends += Qt5::$$m } - isEmpty(PLUGIN_MODULE_NAME): error("No module claims plugin type '$$PLUGIN_TYPE'") + CMAKE_PLUGIN_EXTENDS = $$join(list_plugin_extends, ";") } + PLUGIN_MODULE_NAME = + unique_qt_modules = $$unique(QT_MODULES) # In case modules appear in multiple places + for (mod, unique_qt_modules) { + contains(QT.$${mod}.plugin_types, $$PLUGIN_TYPE) { + !isEmpty(PLUGIN_MODULE_NAME): \ + error("Multiple modules claim plugin type '$$PLUGIN_TYPE' ($$mod, in addition to $$PLUGIN_MODULE_NAME)") + PLUGIN_MODULE_NAME = $$mod + } + } + isEmpty(PLUGIN_MODULE_NAME): error("No module claims plugin type '$$PLUGIN_TYPE'") + + sorted_deps = $$sort_depends(QT_PLUGIN.$${CMAKE_QT_STEM}.DEPENDS, QT.) + mod_deps = + lib_deps = + aux_mod_deps = + aux_lib_deps = + for (dep, sorted_deps) { + cdep = $$cmakeModuleName($$dep) + mod_deps += $$cdep + lib_deps += Qt5::$$cdep + } + CMAKE_PLUGIN_MODULE_DEPS = $$join(mod_deps, ";") + CMAKE_PLUGIN_QT5_MODULE_DEPS = $$join(lib_deps, ";") + CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME) CMAKE_PLUGIN_NAME = $$PLUGIN_CLASS_NAME + CMAKE_PLUGIN_TYPE = $$PLUGIN_TYPE + CMAKE_PLUGIN_TYPE_ESCAPED = $$replace(PLUGIN_TYPE, [-/], _) win32 { isEmpty(CMAKE_STATIC_TYPE) { - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.dll - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.dll + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.dll + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.dll + CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.prl } else:mingw { - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}.a - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}d.a + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.a + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}d.a + CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}d.prl } else { # MSVC static - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${TARGET}.lib - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${TARGET}d.lib + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.lib + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.lib + CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/$${CMAKE_QT_STEM}d.prl } } else { mac { - isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .dylib - else: CMAKE_PlUGIN_EXT = .a + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PLUGIN_EXT = .dylib + else: CMAKE_PLUGIN_EXT = .a - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}$${CMAKE_PLUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}_debug$${CMAKE_PLUGIN_EXT} + CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}_debug.prl } else { - isEmpty(CMAKE_STATIC_TYPE): CMAKE_PlUGIN_EXT = .so - else: CMAKE_PlUGIN_EXT = .a + isEmpty(CMAKE_STATIC_TYPE): CMAKE_PLUGIN_EXT = .so + else: CMAKE_PLUGIN_EXT = .a - CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} - CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${TARGET}$${CMAKE_PlUGIN_EXT} + CMAKE_PLUGIN_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}$${CMAKE_PLUGIN_EXT} + CMAKE_PLUGIN_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}$${CMAKE_PLUGIN_EXT} + CMAKE_PRL_FILE_LOCATION_RELEASE = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.prl + CMAKE_PRL_FILE_LOCATION_DEBUG = $$PLUGIN_TYPE/lib$${CMAKE_QT_STEM}.prl } } cmake_target_file.input = $$PWD/data/cmake/Qt5PluginTarget.cmake.in cmake_target_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}_$${PLUGIN_CLASS_NAME}.cmake + cmake_qt5_plugin_import_file.input = $$PWD/data/cmake/Qt5ImportPlugin.cpp.in + cmake_qt5_plugin_import_file.output = $$CMAKE_OUT_DIR/Qt5$${CMAKE_MODULE_NAME}/Qt5$${CMAKE_MODULE_NAME}_$${PLUGIN_CLASS_NAME}_Import.cpp - !build_pass:QMAKE_SUBSTITUTES += \ - cmake_target_file + !build_pass { + QMAKE_SUBSTITUTES += cmake_target_file + static|staticlib: QMAKE_SUBSTITUTES += cmake_qt5_plugin_import_file + } cmake_qt5_plugin_file.files = $$cmake_target_file.output + static|staticlib: cmake_qt5_plugin_file.files += $$cmake_qt5_plugin_import_file.output cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} INSTALLS += cmake_qt5_plugin_file @@ -244,6 +279,7 @@ CMAKE_MODULE_DEPS = $$join(mod_deps, ";") CMAKE_QT5_MODULE_DEPS = $$join(lib_deps, ";") CMAKE_INTERFACE_MODULE_DEPS = $$join(aux_mod_deps, ";") CMAKE_INTERFACE_QT5_MODULE_DEPS = $$join(aux_lib_deps, ";") +CMAKE_MODULE_PLUGIN_TYPES = $$join(QT.$${MODULE}.plugin_types, ";") mac { !isEmpty(CMAKE_STATIC_TYPE) { diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in index 2b7c1d28c4..7a599d30d5 100644 --- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in @@ -397,6 +397,8 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY INTERFACE_QT_ENABLED_FEATURES $$join(QT.$${MODULE}.enabled_features, ";")) set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY INTERFACE_QT_DISABLED_FEATURES $$join(QT.$${MODULE}.disabled_features, ";")) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} PROPERTY QT_PLUGIN_TYPES \"$${CMAKE_MODULE_PLUGIN_TYPES}\") + set(_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIRS_EXIST TRUE) foreach (_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR ${Qt5$${CMAKE_MODULE_NAME}_OWN_PRIVATE_INCLUDE_DIRS}) if (NOT EXISTS ${_Qt5$${CMAKE_MODULE_NAME}_PRIVATE_DIR}) @@ -504,7 +506,8 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) file(GLOB pluginTargets \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_*Plugin.cmake\") - macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) + macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION + IsDebugAndRelease) set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) !!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) @@ -516,6 +519,36 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) set_target_properties(Qt5::${Plugin} PROPERTIES \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} ) + +!!IF !isEmpty(CMAKE_STATIC_TYPE) + set(_static_deps + ${_Qt5${Plugin}_STATIC_${Configuration}_LIB_DEPENDENCIES} + ) + + if(NOT "${IsDebugAndRelease}") + set(_genex_condition \"1\") + else() + if("${Configuration}" STREQUAL "DEBUG") + set(_genex_condition \"$<CONFIG:Debug>\") + else() + set(_genex_condition \"$<NOT:$<CONFIG:Debug>>\") + endif() + endif() + if(_static_deps) + set(_static_deps_genex \"$<${_genex_condition}:${_static_deps}>\") + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY INTERFACE_LINK_LIBRARIES + \"${_static_deps_genex}\" + ) + endif() + + set(_static_link_flags \"${_Qt5${Plugin}_STATIC_${Configuration}_LINK_FLAGS}\") + if(NOT CMAKE_VERSION VERSION_LESS \"3.13\" AND _static_link_flags) + set(_static_link_flags_genex \"$<${_genex_condition}:${_static_link_flags}>\") + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY INTERFACE_LINK_OPTIONS + \"${_static_link_flags_genex}\" + ) + endif() +!!ENDIF endmacro() if (pluginTargets) diff --git a/mkspecs/features/data/cmake/Qt5ImportPlugin.cpp.in b/mkspecs/features/data/cmake/Qt5ImportPlugin.cpp.in new file mode 100644 index 0000000000..6e27f7a260 --- /dev/null +++ b/mkspecs/features/data/cmake/Qt5ImportPlugin.cpp.in @@ -0,0 +1,2 @@ +#include <QtPlugin> +Q_IMPORT_PLUGIN($$CMAKE_PLUGIN_NAME) diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in index 5baf0fdb10..7b70cfed09 100644 --- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in @@ -1,11 +1,102 @@ add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) +!!IF !isEmpty(CMAKE_STATIC_TYPE) +set(_Qt5$${CMAKE_PLUGIN_NAME}_MODULE_DEPENDENCIES \"$${CMAKE_PLUGIN_MODULE_DEPS}\") + +foreach(_module_dep ${_Qt5$${CMAKE_PLUGIN_NAME}_MODULE_DEPENDENCIES}) + if(NOT Qt5${_module_dep}_FOUND) + find_package(Qt5${_module_dep} + $$VERSION ${_Qt5$${CMAKE_MODULE_NAME}_FIND_VERSION_EXACT} + ${_Qt5$${CMAKE_MODULE_NAME}_DEPENDENCIES_FIND_QUIET} + ${_Qt5$${CMAKE_MODULE_NAME}_FIND_DEPENDENCIES_REQUIRED} + PATHS \"${CMAKE_CURRENT_LIST_DIR}/..\" NO_DEFAULT_PATH + ) + endif() +endforeach() + !!IF !isEmpty(CMAKE_RELEASE_TYPE) -_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +_qt5_$${CMAKE_MODULE_NAME}_process_prl_file( + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}$${CMAKE_PRL_FILE_LOCATION_RELEASE}\" RELEASE + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_RELEASE_LIB_DEPENDENCIES + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_RELEASE_LINK_FLAGS +) +!!ELSE +_qt5_$${CMAKE_MODULE_NAME}_process_prl_file( + \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PRL_FILE_LOCATION_RELEASE}\" RELEASE + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_RELEASE_LIB_DEPENDENCIES + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_RELEASE_LINK_FLAGS +) !!ENDIF +!!ENDIF + !!IF !isEmpty(CMAKE_DEBUG_TYPE) -_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") +!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +_qt5_$${CMAKE_MODULE_NAME}_process_prl_file( + \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}$${CMAKE_PRL_FILE_LOCATION_DEBUG}\" DEBUG + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_DEBUG_LIB_DEPENDENCIES + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_DEBUG_LINK_FLAGS +) +!!ELSE +_qt5_$${CMAKE_MODULE_NAME}_process_prl_file( + \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PRL_FILE_LOCATION_DEBUG}\" DEBUG + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_DEBUG_LIB_DEPENDENCIES + _Qt5$${CMAKE_PLUGIN_NAME}_STATIC_DEBUG_LINK_FLAGS +) +!!ENDIF +!!ENDIF + +set_property(TARGET Qt5::$$CMAKE_PLUGIN_NAME PROPERTY INTERFACE_SOURCES + \"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}_$${CMAKE_PLUGIN_NAME}_Import.cpp\" +) +!!ENDIF + +!!IF !isEmpty(CMAKE_RELEASE_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\" $${CMAKE_DEBUG_AND_RELEASE}) +!!ENDIF +!!IF !isEmpty(CMAKE_DEBUG_TYPE) +_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\" $${CMAKE_DEBUG_AND_RELEASE}) !!ENDIF list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) +set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY QT_ALL_PLUGINS_$${CMAKE_PLUGIN_TYPE_ESCAPED} Qt5::$${CMAKE_PLUGIN_NAME}) +!!IF !isEmpty(CMAKE_STATIC_TYPE) +# $<GENEX_EVAL:...> wasn\'t added until CMake 3.12, so put a version guard around it +if(CMAKE_VERSION VERSION_LESS \"3.12\") + set(_manual_plugins_genex \"$<TARGET_PROPERTY:QT_PLUGINS>\") + set(_plugin_type_genex \"$<TARGET_PROPERTY:QT_PLUGINS_$${CMAKE_PLUGIN_TYPE_ESCAPED}>\") + set(_no_plugins_genex \"$<TARGET_PROPERTY:QT_NO_PLUGINS>\") +else() + set(_manual_plugins_genex \"$<GENEX_EVAL:$<TARGET_PROPERTY:QT_PLUGINS>>\") + set(_plugin_type_genex \"$<GENEX_EVAL:$<TARGET_PROPERTY:QT_PLUGINS_$${CMAKE_PLUGIN_TYPE_ESCAPED}>>\") + set(_no_plugins_genex \"$<GENEX_EVAL:$<TARGET_PROPERTY:QT_NO_PLUGINS>>\") +endif() +set(_user_specified_genex + \"$<IN_LIST:Qt5::$$CMAKE_PLUGIN_NAME,${_manual_plugins_genex};${_plugin_type_genex}>\" +) +string(CONCAT _plugin_genex + \"$<$<OR:\" + # Add this plugin if it\'s in the list of manual plugins or plugins for the type + \"${_user_specified_genex},\" + # Add this plugin if the list of plugins for the type is empty, the PLUGIN_EXTENDS + # is either empty or equal to the module name, and the user hasn\'t blacklisted it + \"$<AND:\" + \"$<STREQUAL:${_plugin_type_genex},>,\" + \"$<OR:\" + \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,Qt5::$${CMAKE_MODULE_NAME}>,\" + \"$<STREQUAL:$<TARGET_PROPERTY:Qt5::$${CMAKE_PLUGIN_NAME},QT_PLUGIN_EXTENDS>,>\" + \">,\" + \"$<NOT:$<IN_LIST:Qt5::$${CMAKE_PLUGIN_NAME},${_no_plugins_genex}>>\" + \">\" + \">:Qt5::$$CMAKE_PLUGIN_NAME>\" +) +set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY INTERFACE_LINK_LIBRARIES + ${_plugin_genex} +) +set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} APPEND PROPERTY INTERFACE_LINK_LIBRARIES + \"$${CMAKE_PLUGIN_QT5_MODULE_DEPS}\" +) +!!ENDIF +set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} PROPERTY QT_PLUGIN_TYPE \"$$CMAKE_PLUGIN_TYPE\") +set_property(TARGET Qt5::$${CMAKE_PLUGIN_NAME} PROPERTY QT_PLUGIN_EXTENDS \"$$CMAKE_PLUGIN_EXTENDS\") |