summaryrefslogtreecommitdiffstats
path: root/src/corelib/doc/src/cmake-macros.qdoc
blob: 7c0443fba7f82237dd76a7c5b81ed4ed3bb4ce51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page qtcore-cmake-qt5-wrap-cpp.html
\ingroup cmake-macros-qtcore

\title qt5_wrap_cpp

\brief Creates \c{.moc} files from sources.

\section1 Synopsis

\badcode
qt5_wrap_cpp(<VAR> src_file1 [src_file2 ...]
             [TARGET target]
             [OPTIONS ...]
             [DEPENDS ...])
\endcode

\section1 Description

Creates rules for calling \l{moc}{Meta-Object Compiler (moc)} on the given
source files. For each input file, an output file is generated in the build
directory. The paths of the generated files are added to\c{<VAR>}.

\note This is a low-level macro. See the \l{CMake AUTOMOC Documentation} for a
more convenient way to let source files be processed with \c{moc}.

\section1 Options

You can set an explicit \c{TARGET}. This will make sure that the target
properties \c{INCLUDE_DIRECTORIES} and \c{COMPILE_DEFINITIONS} are also used
when scanning the source files with \c{moc}.

You can set additional \c{OPTIONS} that should be added to the \c{moc} calls.
You can find possible options in the \l{moc}{moc documentation}.

\c{DEPENDS} allows you to add additional dependencies for recreation of the
generated files. This is useful when the sources have implicit dependencies,
like code for a Qt plugin that includes a \c{.json} file using the
Q_PLUGIN_METADATA() macro.

\section1 Examples

\snippet cmake-macros/examples.cmake qt5_wrap_cpp
*/

/*!
\page qtcore-cmake-qt5-add-resources.html
\ingroup cmake-macros-qtcore

\title qt5_add_resources

\brief Compiles binary resources into source code.

\section1 Synopsis

\badcode
qt5_add_resources(<VAR> file1.qrc [file2.qrc ...]
                  [OPTIONS ...])
\endcode

\section1 Description

Creates source code from Qt resource files using the
\l{Resource Compiler (rcc)}. Paths to the generated source files are added to
\c{<VAR>}.

\note This is a low-level macro. See the \l{CMake AUTORCC Documentation} for a
more convenient way to let Qt resource files be processed with \c{rcc}.
For embedding bigger resources, see \l qt5_add_big_resources.

\section1 Arguments

You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls.
You can find possible options in the \l{rcc}{rcc documentation}.

\section1 Examples

\snippet cmake-macros/examples.cmake qt5_add_resources
*/

/*!
\page qtcore-cmake-qt5-add-big-resources.html
\ingroup cmake-macros-qtcore

\title qt5_add_big_resources

\brief Compiles big binary resources into object code.

\section1 Synopsis

\badcode
qt5_add_big_resources(<VAR> file1.qrc [file2.qrc ...]
                      [OPTIONS ...])
\endcode

\section1 Description

Creates compiled object files from Qt resource files using the
\l{Resource Compiler (rcc)}. Paths to the generated files are added to
\c{<VAR>}.

This is similar to \l qt5_add_resources, but directly generates object
files (\c .o, \c .obj) files instead of C++ source code. This allows to
embed bigger resources, where compiling to C++ sources and then to
binaries would be too time consuming or memory intensive.

Note that this macro is only available if using \c{CMake} 3.9 or later.

\section1 Arguments

You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls.
You can find possible options in the \l{rcc}{rcc documentation}.

\section1 Examples

\snippet cmake-macros/examples.cmake qt5_add_big_resources
*/

/*!
\page qtcore-cmake-qt5_add_binary_resources.html
\ingroup cmake-macros-qtcore

\title qt5_add_binary_resources

\brief Creates an \c{RCC} file from a list of Qt resource files.

\section1 Synopsis

\badcode
qt5_add_binary_resources(target file1.qrc [file2.qrc ...]
                         [DESTINATION ...]
                         [OPTIONS ...])
\endcode

\section1 Description

Adds a custom \c target that compiles Qt resource files into a binary \c{.rcc}
file.

\section1 Arguments

\c{DESTINATION} sets the path of the generated \c{.rcc} file. The default is
\c{${CMAKE_CURRENT_BINARY_DIR}/${target}.rcc}.

You can set additional \c{OPTIONS} that should be added to the \c{rcc} calls.
You can find possible options in the \l{rcc}{rcc documentation}.

\section1 Examples

\snippet cmake-macros/examples.cmake qt5_add_binary_resources
*/

/*!
\page qtcore-cmake-qt5-generate-moc.html
\ingroup cmake-macros-qtcore

\title qt5_generate_moc

\brief Calls moc on an input file.

\section1 Synopsis

\badcode
qt5_generate_moc(src_file dest_file
                 [TARGET target])
\endcode

\section1 Description

Creates a rule to call the \l{moc}{Meta-Object Compiler (moc)} on \c src_file
and store the output in \c dest_file.

\note This is a low-level macro. See the \l{CMake AUTOMOC Documentation} for a
more convenient way to let source files be processed with \c{moc}.
\l qt5_wrap_cpp is also similar, but automatically generates a temporary file
path for you.

\section1 Arguments

You can set an explicit \c{TARGET}. This will make sure that the target
properties \c{INCLUDE_DIRECTORIES} and \c{COMPILE_DEFINITIONS} are also used
when scanning the source files with \c{moc}.

\section1 Examples

\snippet cmake-macros/examples.cmake qt5_generate_moc
*/


/*!
\page qtcore-cmake-qt5-import-plugins.html
\ingroup cmake-macros-qtcore

\title qt5_import_plugins

\brief Specifies a custom set of plugins to import for a static Qt build

\section1 Synopsis

\badcode
qt5_import_plugins(target
                   [INCLUDE plugin ...]
                   [EXCLUDE plugin ...]
                   [INCLUDE_BY_TYPE plugin_type plugin ...]
                   [EXCLUDE_BY_TYPE plugin_type])
\endcode

\section1 Description

Specifies a custom set of plugins to import. The optional arguments:
\c INCLUDE, \c EXCLUDE, \c INCLUDE_BY_TYPE, and \c EXCLUDE_BY_TYPE,
can be used more than once.

This CMake command was introduced in Qt 5.14.

\list
\li \c INCLUDE -- can be used to specify a list of plugins to import.
\li \c EXCLUDE -- can be used to specify a list of plugins to exclude.
\li \c INCLUDE_BY_TYPE -- can be used to override the list of plugins to
       import for a certain plugin type.
\li \c EXCLUDE_BY_TYPE -- can be used to specify a plugin type to exclude;
       then no plugins of that type are imported.
\endlist

Qt provides plugin types such as \c imageformats, \c platforms,
and \c sqldrivers.

If \c qt5_import_plugins() isn't called, the target automatically links against
a sane set of default plugins, for each Qt module that the target is linked
against. For more information, see
\l{CMake target_link_libraries Documentation}{target_link_libraries}.

Each plugin comes with a C++ stub file that automatically
initializes the plugin. Consequently, any target that links against a plugin
has this C++ file added to its \c SOURCES.

\note This macro imports plugins from static Qt builds only.
On shared builds, it does nothing.

\section1 Example

\snippet cmake-macros/examples.cmake qt5_import_plugins

In the snippet above, the following occurs with the executable \c myapp:

\list
\li The \c Qt5::QCocoaIntegrationPlugin is imported into myapp.
\li The \c Qt5::QMinimalIntegrationPlugin plugin is
    excluded from being automatically imported into myapp.
\li The default list of plugins for \c imageformats is
    overridden to only include Qt5::QGifPlugin and Qt5::QJpegPlugin.
\li All \c sqldrivers plugins are excluded from automatic importing.
\endlist

*/