qt_set_finalizer_mode
Настраивает аспекты завершения работы целевого объекта.
Примечание: Эта команда находится на стадии технологического предварительного просмотра и может быть изменена в будущих выпусках.
Резюме
qt_set_finalizer_mode(target
ENABLE | DISABLE
MODES modes...
) Если команды без версии отключены, используйте qt6_set_finalizer_mode() вместо этого. Она поддерживает тот же набор аргументов, что и эта команда.
Описание
Эта команда используется для настройки некоторых аспектов завершения работы конкретного target. Она оказывает воздействие только в том случае, если вызвана до того, как target будет завершен, что происходит в одном из следующих сценариев:
- Проект явно вызывает qt_finalize_target() для
target. Это обычно означает, что ключевое словоMANUAL_FINALIZATIONбыло передано в qt_add_executable() при определенииtarget. - Используется CMake 3.17 или более ранней версии, в этом случае завершение всегда происходит немедленно в рамках вызова qt_add_executable().
- Используется CMake 3.18 или более поздней версии, ключевое слово
MANUAL_FINALIZATIONне было передано в qt_add_executable() при определенииtarget, и отложенное завершение было завершено в конце области видимости каталога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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt-set-finalizer-mode.html