qt_set_finalizer_mode
自定义目标的终结方式。
此命令在 Qt 6.2 中引入。
注意: 此命令为技术预览版,可能会在未来版本中更改。
简介
qt_set_finalizer_mode(target ENABLE | DISABLE MODES modes... )
如果禁用了无版本命令,请使用qt6_set_finalizer_mode()
代替。它支持与此命令相同的参数集。
说明
该命令用于定制特定target
的最终版本的某些方面。只有在target
最终完成前调用该命令才会生效,在以下情况中会出现:
- 项目为
target
明确调用了qt_finalize_target()。这通常意味着在定义target
时,MANUAL_FINALIZATION
关键字被传递给了qt_add_executable()。 - 使用的是 CMake 3.17 或更早版本,在这种情况下,最终确定总是在调用qt_add_executable() 时立即发生。
- 如果使用的是 CMake 3.18 或更高版本,则在定义
target
时没有将MANUAL_FINALIZATION
关键字传递给qt_add_executable(),并且在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()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.