qt_set_finalizer_mode
Stellt Aspekte der Finalisierung eines Targets ein.
Dieser Befehl wurde in Qt 6.2 eingeführt.
Hinweis: Dieser Befehl befindet sich in der Technologievorschau und kann sich in zukünftigen Versionen ändern.
Synopse
qt_set_finalizer_mode(target ENABLE | DISABLE MODES modes... )
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_set_finalizer_mode()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Beschreibung
Dieser Befehl wird verwendet, um einige Aspekte der Finalisierung eines bestimmten target
anzupassen. Er hat nur dann eine Wirkung, wenn er vor der Finalisierung von target
aufgerufen wird, was in einem der folgenden Szenarien der Fall ist:
- Das Projekt ruft explizit qt_finalize_target() für die
target
auf. Das bedeutet normalerweise, dass dasMANUAL_FINALIZATION
Schlüsselwort an qt_add_executable() übergeben wurde, als dietarget
definiert wurde. - Es wird CMake 3.17 oder früher verwendet, in diesem Fall erfolgt die Finalisierung immer sofort als Teil des Aufrufs von qt_add_executable().
- CMake 3.18 oder höher wird verwendet, das Schlüsselwort
MANUAL_FINALIZATION
wurde nicht an qt_add_executable() übergeben, alstarget
definiert wurde, und die aufgeschobene Finalisierung wurde am Ende des Verzeichnisbereichs vontarget
abgeschlossen.
qt_set_finalizer_mode()
wird verwendet, um eine Liste von Modi zu aktivieren oder zu deaktivieren, wobei ein Modus einem bestimmten Aspekt der Finalisierung entspricht. Die derzeit unterstützten Finalisierungsmodi sind:
Modus | Standard | Finalisierungsverhalten |
---|---|---|
static_plugins | Aktiviert | Wenn Qt statisch gebaut wird, erstellt es Initialisierungsobjektbibliotheken für seine statischen Plugins. Wenn target eine ausführbare Datei ist und dieser Finalisierungsmodus aktiviert ist, werden alle Plugin-Initialisierungs-Objektbibliotheken, die von target benötigt werden, direkt mit ihr verknüpft. Dies verhindert Zyklen zwischen den von Qt bereitgestellten statischen Bibliotheken und kann die Link-Zeit reduzieren. Wenn dieser Finalisierungsmodus deaktiviert ist, wird jeder Plugin-Initialisierer stattdessen über die Nutzungsanforderungen der zugehörigen Qt-Bibliothek weitergegeben, was zu Zyklen führen kann. Wenn Qt nicht statisch gebaut wird, ist dieser Finalizer-Modus nicht relevant und wird nicht verwendet. |
Beispiel
Das folgende Beispiel geht davon aus, dass Sie CMake 3.19 oder höher verwenden (erforderlich für die latente Finalisierung):
qt_add_executable(my_app main.cpp) qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
Das gleiche Beispiel mit manueller Finalisierung könnte wie folgt aussehen:
qt_add_executable(my_app MANUAL_FINALIZATION main.cpp) qt_set_finalizer_mode(my_app ENABLE MODES static_plugins) qt_finalize_target(my_app)
Siehe auch 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.