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_generate_deploy_app_script.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-generate-deploy-app-script.html
6
\ingroup cmake-commands-qtcore
7
8
\title qt_generate_deploy_app_script
9
\keyword qt_generate_deploy_app_script()
10
11
\summary {Generate a deployment script for an application.}
12
13
\include cmake-find-package-core.qdocinc
14
15
\cmakecommandsince 6.3
16
\note This command is currently only supported on Windows, macOS, and Linux.
17
18
\section1 Synopsis
19
20
\badcode
21
qt_generate_deploy_app_script(
22
TARGET target
23
OUTPUT_SCRIPT <var>
24
[NO_TRANSLATIONS]
25
[NO_COMPILER_RUNTIME]
26
[NO_UNSUPPORTED_PLATFORM_ERROR]
27
[NO_PLUGINS] # since Qt 6.10
28
[EXCLUDE_PLUGIN_TYPES type_or_target...] # since Qt 6.10
29
[INCLUDE_PLUGIN_TYPES type_or_target...] # since Qt 6.10
30
[EXCLUDE_PLUGINS name...] # since Qt 6.10
31
[INCLUDE_PLUGINS name...] # since Qt 6.10
32
[DEPLOY_TOOL_OPTIONS ...]
33
[PRE_INCLUDE_REGEXES regexes...]
34
[PRE_EXCLUDE_REGEXES regexes...]
35
[POST_INCLUDE_REGEXES regexes...]
36
[POST_EXCLUDE_REGEXES regexes...]
37
[POST_INCLUDE_FILES files...]
38
[POST_EXCLUDE_FILES files...]
39
)
40
\endcode
41
42
\versionlessCMakeCommandsNote qt6_generate_deploy_app_script()
43
44
\section1 Description
45
46
Installing an executable target with \l{install(TARGETS)} only installs the
47
target's executable (except for macOS app bundles, which will copy the whole
48
bundle). You need to explicitly install any other libraries or plugins the
49
executable depends on yourself. \c{qt_generate_deploy_app_script()} is a
50
convenience command intended to simplify that process. It expects the
51
application to follow Qt's recommended install directory structure fairly
52
closely. That structure is based on CMake's default install layout, as
53
determined by \l{GNUInstallDirs} (except for macOS app bundles, which follow
54
Apple's requirements instead).
55
56
The command generates a script whose name will be stored in the variable named
57
by the \c{OUTPUT_SCRIPT} option. That script is only written at CMake
58
generation time. It is intended to be used with the \l{install(SCRIPT)} command,
59
which should come after the application's target has been installed using
60
\l{install(TARGETS)}.
61
62
The deployment script will call \l qt_deploy_runtime_dependencies()
63
with a suitable set of options for the standard
64
install layout. Currently, this is only implemented for
65
\list
66
\li macOS app bundles built on a macOS host,
67
\li Linux executables built on a Linux host,
68
\li and Windows executables built on a Windows host.
69
\endlist
70
Cross-building a Windows executable on a Linux host, as well as similar
71
scenarios, are not currently supported.
72
Calling \c{qt_generate_deploy_app_script()} in such a case will result
73
in a fatal error, unless the \c{NO_UNSUPPORTED_PLATFORM_ERROR} option is given.
74
75
On platforms other than macOS, Qt translations are automatically deployed. To
76
inhibit this behavior, specify \c{NO_TRANSLATIONS}. Use
77
\l qt_deploy_translations() to deploy translations in a
78
customized way.
79
80
For Windows desktop applications, the required runtime files for the compiler
81
are also installed by default. To prevent this, specify \c{NO_COMPILER_RUNTIME}.
82
83
Since Qt 6.7, you can use \c{DEPLOY_TOOL_OPTIONS} to pass additional options to
84
the underlying deployment tool. This only has an effect if the underlying
85
deployment tool is either macdeployqt or windeployqt.
86
87
\note A value that contains whitespace, like a code signing identity, only reaches
88
the deployment tool unchanged if \l {QTP0007} is set to \c NEW. With the \c OLD
89
behavior, such a value is written to the generated script unquoted and gets split
90
at whitespace, which projects used to work around by adding another level of
91
quoting. Remove that extra quoting when setting the policy to \c NEW.
92
93
\note The version-less \c qt_generate_deploy_app_script() forwards its arguments
94
through either a function or a macro depending on the value of \l {QTP0008}.
95
With the \c OLD behavior a value that contains a backslash or a \c{${var}}
96
reference is evaluated at macro expansion time, so a regex like
97
\c{foo\\.dylib} loses a level of escaping.
98
This affects \c{DEPLOY_TOOL_OPTIONS} and the regex and file list arguments.
99
Calling \c qt6_generate_deploy_app_script() directly avoids this issue.
100
101
For deploying a QML application, use
102
\l qt_generate_deploy_qml_app_script()
103
instead.
104
105
For generating a custom deployment script, use
106
\l qt_generate_deploy_script().
107
108
The options \c{PRE_INCLUDE_REGEXES}, \c{PRE_EXCLUDE_REGEXES},
109
\c{POST_INCLUDE_REGEXES}, \c{POST_EXCLUDE_REGEXES}, \c{POST_INCLUDE_FILES}, and
110
\c{POST_EXCLUDE_FILES} can be specified to control the deployment of runtime
111
dependencies. These options do not apply to all platforms and are forwarded
112
unmodified to \l qt_deploy_runtime_dependencies().
113
114
The options \c EXCLUDE_PLUGINS, \c EXCLUDE_PLUGIN_TYPES, \c INCLUDE_PLUGINS, and
115
\c INCLUDE_PLUGIN_TYPES are used to select Qt plugins. See
116
\l qt_deploy_runtime_dependencies() for their
117
documentation.
118
119
You can turn off plugin deployment altogether with the \c NO_PLUGINS option.
120
121
\sa qt_standard_project_setup(),
122
qt_generate_deploy_script(),
123
qt_generate_deploy_qml_app_script(),
124
{QTP0007},
125
{QTP0008}
126
127
\section1 Example
128
129
The following example shows how to deploy an application \c{MyApp}.
130
131
\include cmake-generate-deploy-app-script.qdocinc
132
133
The following example shows how to use the \c{DEPLOY_TOOL_OPTIONS} parameter to
134
pass different options to macdeployqt and windeployqt.
135
136
\include cmake-generate-deploy-app-script-deploy-tool-options.qdocinc
137
138
*/
qtbase
src
corelib
doc
src
cmake
qt_generate_deploy_app_script.qdoc
Generated on
for Qt by
1.16.1