Spec-Zone.ru › Qt

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API