qt_import_plugins

指定要导入或排除的自定义插件集合。

此命令定义在Qt6包的Core组件中,可以按以下方式加载:

find_package(Qt6 REQUIRED COMPONENTS Core)

此命令是从Qt 5.14引入的。

概述

qt_import_plugins(target
                  [INCLUDE plugin ...]
                  [EXCLUDE plugin ...]
                  [INCLUDE_BY_TYPE plugin_type plugin ...]
                  [EXCLUDE_BY_TYPE plugin_type]
                  [NO_DEFAULT]
)

如果禁用了无版本命令,请使用qt6_import_plugins()。它支持与此命令相同的参数集。

描述

指定要导入的自定义插件集合。可选参数:INCLUDEEXCLUDEINCLUDE_BY_TYPEEXCLUDE_BY_TYPE可多次使用。

  • INCLUDE - 可以用来指定要导入的插件列表。
  • EXCLUDE - 可以用来指定要排除的插件列表。
  • INCLUDE_BY_TYPE - 可以用来覆盖特定插件类型的导入插件列表。
  • EXCLUDE_BY_TYPE - 可以用来指定要排除的插件类型;然后不会导入该类型的任何插件。
  • NO_DEFAULT - 阻止默认插件自动包含(例如默认平台插件)。

Qt提供例如imageformatsplatformssqldrivers之类的插件类型。

动态插件

如果插件是动态库,则该函数控制插件的部署。使用此函数,您可以排除特定插件类型,例如不将它们打包到Android APK中:

qt_add_executable(MyApp ...)
...
qt_import_plugins(MyApp EXCLUDE_BY_TYPE imageformats)

在上面的代码片段中,当部署MyApp时,所有具有imageformats类型的插件都将被排除。生成的Android APK将不包含任何imageformats插件。

如果不使用此命令,目标将自动部署属于目标链接的Qt模块的所有插件。

静态插件

如果不使用此命令,目标将自动针对每个目标链接的Qt模块使用一组合理的默认静态插件。有关更多信息,请参阅target_link_libraries

每个插件都附带一个C++存根文件,用于自动初始化静态插件。因此,任何链接到插件的.target都会添加此C++文件到它的SOURCES

示例

qt_add_executable(myapp main.cpp)
target_link_libraries(myapp Qt::Gui Qt::Sql)
qt_import_plugins(myapp
    INCLUDE Qt::QCocoaIntegrationPlugin
    EXCLUDE Qt::QMinimalIntegrationPlugin
    INCLUDE_BY_TYPE imageformats Qt::QGifPlugin Qt::QJpegPlugin
    EXCLUDE_BY_TYPE sqldrivers
)

在上面的代码片段中,与可执行文件myapp发生以下事件:

  • Qt6::QCocoaIntegrationPlugin导入到myapp中。
  • Qt6::QMinimalIntegrationPlugin插件被排除,不会被自动导入到myapp中。
  • 默认的imageformats插件列表被覆盖,仅包含Qt6::QGifPlugin和Qt6::QJpegPlugin。
  • 所有sqldrivers插件都被排除在自动导入之外。

参见 qt_import_qml_plugins().

© 2024 The Qt Company Ltd. 本文档中包含的贡献属于各自的版权所有者。本提供的文档受GNU自由文档许可证版本1.3的条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰及全球其他国家的The Qt Company Ltd的商标。所有其他商标属于其各自的所有者。