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公司有限公司的商标。所有其他商标均为各自权利人的财产。