qt_set_finalizer_mode

自定义目标终期的某些方面。

此命令自 Qt 6.2 开始引入。

注意:此命令处于技术评估阶段,未来的发行版可能会有所更改。

简要说明

qt_set_finalizer_mode(target
    ENABLE | DISABLE
    MODES modes...
)

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

描述

此命令用于自定义特定 target 终期的一些方面。只有在调用 target 终期之前调用此命令时才有效,终期发生在以下情况之一:

  • 项目明确调用 qt_finalize_target() 以终期 target。这通常意味着在定义 target 时,qt_add_executable() 被传递了 MANUAL_FINALIZATION 关键字。
  • 正在使用 CMake 3.17 或更早版本,在这种情况下,终期总是立即作为 qt_add_executable() 调用的一部分发生。
  • 正在使用 CMake 3.18 或更高版本,且在定义 target 时没有传递 MANUAL_FINALIZATION 关键字,并且在 target 目录作用域的末尾已经完成了延迟终期。

qt_set_finalizer_mode() 用于启用或禁用一系列 模式,其中每个模式对应终期的某个特定方面。目前支持的终期模式有

模式默认终期行为
static_plugins启用当 Qt 静态构建时,它会为它的静态插件创建初始化对象库。如果 target 是可执行文件并且启用了此终期模式,则将需要多次关联到 target 的插件初始化对象库直接链接到它。这可以防止 Qt 提供的静态库之间发生循环,并可能减少链接时间。当禁用此终期模式时,插件初始化对象库将通过其相关联的 Qt 库的用法要求进行传播,这可能导致循环。如果 Qt 不是静态构建的,则此终期模式不相关,并且不会使用。

示例

以下示例假设您正在使用 CMake 3.19 或更高版本(对于延迟终期必需)

qt_add_executable(my_app main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)

使用手动终期的相同示例可能看起来像这样

qt_add_executable(my_app MANUAL_FINALIZATION main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
qt_finalize_target(my_app)

另请参阅qt_finalize_target()

© 2024 Qt公司有限公司。本文件中包含的文档贡献均为各自权利人的版权。所提供的文档受由自由软件基金会颁布的GNU自由文档许可第1.3版的条款约束。Qt及其相关标志是芬兰及全球其他国家的Qt公司有限公司的商标。所有其他商标均为各自权利人的财产。