qt_add_plugin
创建 Qt 插件目标。
该命令定义在 Qt6
包的 Core
组件中,可以按照如下方式加载:
find_package(Qt6 REQUIRED COMPONENTS Core)
此命令自 Qt 6.0 版本开始引入。
摘要
qt_add_plugin(target [SHARED | STATIC] [CLASS_NAME class_name] [OUTPUT_TARGETS variable_name] [MANUAL_FINALIZATION] sources... )
MANUAL_FINALIZATION
选项和设置源的能力是从 Qt 6.5 版本中引入的。
如果禁用了无版本命令,请使用 qt6_add_plugin()
代替。它支持与该命令相同的参数集合。
描述
Qt 插件目标除了普通 CMake 库目标之外还有额外的要求。`qt_add_plugin()` 命令添加了必要的处理,以确保满足这些要求。当定义 Qt 插件目标时,应调用此命令而不是内置的 CMake `add_library()` 命令。
默认情况下,如果 Qt 以静态方式构建,则插件将创建为 STATIC
库,否则将创建为 MODULE
库。您可以通过显式提供 STATIC
或 SHARED
选项来覆盖此默认设置。
提供的任何 sources
都将通过内部对 add_library()
的调用传递。
注意:非静态插件旨在在运行时动态加载,而不是在构建时链接。CMake 通过提供动态加载库的 MODULE
库类型和对可能直接链接的库的 SHARED
库类型来区分这两种场景。在处理符号导出时,这一点对某些工具链(特别是 Visual Studio)很重要。可能无法直接链接到 MODULE
库,而没有导出符号的 SHARED
库可能会导致构建时错误。如果将 SHARED
选项传递给 qt_add_plugin()
,则它将创建一个 MODULE
库而不是 SHARED
库。
每个 Qt 插件都有一个类名。默认情况下,这将与 target
相同,但可以通过 CLASS_NAME
选项来覆盖。类名对应于声明插件元数据的 C++ 类的名称。对于静态插件,它也是传递给 Q_IMPORT_PLUGIN 的名称,这会将插件导入应用程序并在运行时确保它可用。
如果插件是静态构建的,qt_add_plugin()
可能会定义额外的内部目标。这些目标便于自动导入任何链接到插件的可执行文件或共享库。如果项目安装了插件并打算使其可供其他项目链接,则应安装这些内部目标。可以通过提供OUTPUT_TARGETS
选项,然后是返回目标列表的变量的名称来获取这些目标的名称。
最终化
创建目标后,可能需要进行进一步的加工或最终化步骤。最终化步骤通过qt_finalize_target()命令实现。
有关详细信息和MANUAL_FINALIZATION
选项的含义,请参阅qt_add_library
的最终化文档。
© 2024 Qt公司有限公司。本文件内包含的文档贡献者的版权所有。本文件的文档受GNU自由文档许可证版本1.3的许可条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰及世界其他地区Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。