Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qt_set_finalizer_mode.qdoc
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
3
4
/*!
5
\page qt-set-finalizer-mode.html
6
\ingroup cmake-commands-qtcore
7
8
\title qt_set_finalizer_mode
9
\keyword qt6_set_finalizer_mode
10
11
\summary {Customizes aspects of a target's finalization.}
12
13
\cmakecommandsince 6.2
14
\preliminarycmakecommand
15
16
\section1 Synopsis
17
18
\badcode
19
qt_set_finalizer_mode(target
20
ENABLE | DISABLE
21
MODES modes...
22
)
23
\endcode
24
25
\versionlessCMakeCommandsNote qt6_set_finalizer_mode()
26
27
\section1 Description
28
29
This command is used to customize some aspects of the finalization of a
30
specific \c target. It only has an effect if called before \c target is
31
finalized, which occurs in one of the following scenarios:
32
33
\list
34
\li The project explicitly calls \l{qt6_finalize_target}{qt_finalize_target()}
35
for the \c target. This usually means the \c MANUAL_FINALIZATION keyword was
36
passed to \l{qt6_add_executable}{qt_add_executable()} when the \c target
37
was defined.
38
\li CMake 3.17 or earlier is being used, in which case finalization always
39
occurs immediately as part of the call to
40
\l{qt6_add_executable}{qt_add_executable()}.
41
\li CMake 3.18 or later is being used, the \c MANUAL_FINALIZATION keyword was
42
not passed to \l{qt6_add_executable}{qt_add_executable()} when the \c target
43
was defined, and deferred finalization has been completed at the end of the
44
\c target's directory scope.
45
\endlist
46
47
\c{qt_set_finalizer_mode()} is used to enable or disable a list of \e modes,
48
where a mode corresponds to a specific aspect of finalization. The currently
49
supported finalization modes are:
50
51
\table
52
\header
53
\li Mode
54
\li Default
55
\li Finalization behavior
56
\row
57
\li \c static_plugins
58
\li Enabled
59
\li When Qt is built statically, it creates initializer object libraries
60
for its static plugins. If \c target is an executable and this
61
finalization mode is enabled, any plugin initializer object libraries
62
needed by the \c target will be directly linked to it. This
63
prevents cycles between Qt-provided static libraries and may reduce
64
link time. When this finalizer mode is disabled, each plugin
65
initializer is instead propagated via usage requirements of its
66
associated Qt library, which may cause cycles. If Qt is not built
67
statically, this finalizer mode is not relevant and isn't used.
68
\endtable
69
70
\sa {qt6_finalize_target}{qt_finalize_target()}
71
72
\section1 Example
73
74
The following example assumes you are using CMake 3.19 or later (required for
75
deferred finalization):
76
77
\badcode
78
qt_add_executable(my_app main.cpp)
79
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
80
\endcode
81
82
The same example using manual finalization might look like this:
83
84
\badcode
85
qt_add_executable(my_app MANUAL_FINALIZATION main.cpp)
86
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
87
qt_finalize_target(my_app)
88
\endcode
89
90
*/
qtbase
src
corelib
doc
src
cmake
qt_set_finalizer_mode.qdoc
Generated on
for Qt by
1.14.0