source: trunk/doc/src/development/qmake-manual.qdoc@ 561

Last change on this file since 561 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

  • Property svn:eol-style set to native
File size: 187.7 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation (qt-info@nokia.com)
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at qt-info@nokia.com.
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42/*!
43 \page qmake-manual.html
44 \title qmake Manual
45 \startpage {index.html}{Qt Reference Documentation}
46 \nextpage qmake Tutorial
47
48 \ingroup qttools
49 \keyword qmake
50
51 \c qmake is a tool that helps simplify the build
52 process for development project across different platforms. \c qmake
53 automates the generation of Makefiles so that only a few lines of
54 information are needed to create each Makefile. \c qmake can be used for
55 any software project, whether it is written in Qt or not.
56
57 \c qmake generates a Makefile based on the information in a project
58 file. Project files are created by the developer, and are usually
59 simple, but more sophisticated project files can be created for
60 complex projects.
61 \c qmake contains additional features to support development with Qt,
62 automatically including build rules for \l{moc.html}{moc}
63 and \l{uic.html}{uic}.
64 \c qmake can also generate projects for Microsoft Visual studio
65 without requiring the developer to change the project file.
66
67 \section1 Getting Started
68
69 The \l{qmake Tutorial} and guide to \l{qmake Common Projects} provide overviews
70 that aim to help new users get started with \c qmake.
71
72 \list
73 \o \l{qmake Tutorial}
74 \tableofcontents{1 qmake Tutorial}
75 \endlist
76
77 \list
78 \o \l{qmake Common Projects}
79 \tableofcontents{1 qmake Common Projects}
80 \endlist
81
82 \section1 Table of Contents
83
84 \list
85 \o \l{Using qmake}
86 \tableofcontents{1 Using qmake}
87 \o \l{qmake Project Files}
88 \tableofcontents{1 qmake Project Files}
89 \o \l{Running qmake}
90 \tableofcontents{1 Running qmake}
91 \o \l{qmake Platform Notes}
92 \tableofcontents{1 qmake Platform Notes}
93 \o \l{qmake Advanced Usage}
94 \tableofcontents{1 qmake Advanced Usage}
95 \o \l{Using Precompiled Headers}
96 \tableofcontents{1 Using Precompiled Headers}
97 \o \l{qmake Reference}
98 \tableofcontents{1 qmake Reference}
99 \o \l{qmake Variable Reference}
100 \tableofcontents{1 qmake Variable Reference}
101 \o \l{qmake Function Reference}
102 \tableofcontents{1 qmake Function Reference}
103 \o \l{Configuring qmake's Environment}
104 \tableofcontents{1 Configuring qmake's Environment}
105 \endlist
106*/
107
108/*!
109 \page qmake-using.html
110 \title Using qmake
111 \contentspage {qmake Manual}{Contents}
112 \previouspage qmake Manual
113 \nextpage qmake Project Files
114
115 \c qmake provides a project-oriented system for managing the build
116 process for applications, libraries, and other components. This
117 approach gives developers control over the source files used, and
118 allows each of the steps in the process to be described concisely,
119 typically within a single file. \c qmake expands the information in
120 each project file to a Makefile that executes the necessary commands
121 for compiling and linking.
122
123 In this document, we provide a basic introduction to project files,
124 describe some of the main features of \c qmake, and show how to use
125 \c qmake on the command line.
126
127 \section1 Describing a Project
128
129 Projects are described by the contents of project (\c .pro) files.
130 The information within these is used by \c qmake to generate a Makefile
131 containing all the commands that are needed to build each project.
132 Project files typically contain a list of source and header files,
133 general configuration information, and any application-specific details,
134 such as a list of extra libraries to link against, or a list of extra
135 include paths to use.
136
137 Project files can contain a number of different elements, including
138 comments, variable declarations, built-in functions, and some simple
139 control structures. In most simple projects, it is only necessary
140 to declare the source and header files that are used to build the
141 project with some basic configuration options.
142
143 Complete examples of project files can be found in the
144 \l{qmake Tutorial}.
145 An introduction to project files can be found in the
146 \l{qmake Project Files} chapter, and a more detailed description is
147 available in the \l{qmake Reference}.
148
149 \section1 Building a Project
150
151 For simple projects, you only need to run \c qmake in the top
152 level directory of your project. By default, \c qmake generates a
153 Makefile that you then use to build the project, and you can then
154 run your platform's \c make tool to build the project.
155
156 \c qmake can also be used to generate project files. A full
157 description of \c{qmake}'s command line options can be found in the
158 \l{Running qmake} chapter of this manual.
159
160 \section1 Using Precompiled Headers
161
162 In large projects, it is possible to take advantage of precompiled
163 header files to speed up the build process. This feature is described
164 in detail in the \l{Using Precompiled Headers} chapter.
165*/
166
167/*!
168 \page qmake-project-files.html
169 \title qmake Project Files
170 \contentspage {qmake Manual}{Contents}
171 \previouspage Using qmake
172 \nextpage Running qmake
173
174 Project files contain all the information required by \c qmake to build
175 your application, library, or plugin. The resources used by your project
176 are generally specified using a series of declarations, but support for
177 simple programming constructs allow you to describe different build
178 processes for different platforms and environments.
179
180 \tableofcontents
181
182 \section1 Project File Elements
183
184 The project file format used by \c qmake can be used to support both
185 simple and fairly complex build systems. Simple project files will
186 use a straightforward declarative style, defining standard variables
187 to indicate the source and header files that are used in the project.
188 Complex projects may use the control flow structures to fine-tune the
189 build process.
190
191 The following sections describe the different types of elements used
192 in project files.
193
194 \section2 Variables
195
196 In a project file, variables are used to hold lists of strings.
197 In the simplest projects, these variables inform \c qmake about the
198 configuration options to use, or supply filenames and paths to use
199 in the build process.
200
201 \c qmake looks for certain variables in each project file, and it
202 uses the contents of these to determine what it should write to a
203 Makefile. For example, the list of values in the \c HEADERS and
204 \c SOURCES variables are used to tell \c qmake about header and
205 source files in the same directory as the project file.
206
207 Variables can also be used internally to store temporary lists of values,
208 and existing lists of values can be overwritten or extended with new
209 values.
210
211 The following lines show how lists of values are assigned to variables:
212
213 \snippet doc/src/snippets/qmake/variables.pro 0
214
215 Note that the first assignment only includes values that are specified on
216 the same line as the \c SOURCES variable. The second assignment splits
217 the items across lines by using the \c \\ character.
218
219 The list of values in a variable is extended in the following way:
220
221 \snippet doc/src/snippets/qmake/variables.pro 1
222
223 The \c CONFIG variable is another special variable that \c qmake
224 uses when generating a Makefile. It is discussed in the section on
225 \l{#GeneralConfiguration}{general configuration} later in this chapter.
226 In the above line, \c qt is added to the list of existing values
227 contained in \c CONFIG.
228
229 The following table lists the variables that \c qmake recognizes, and
230 describes what they should contain.
231
232 \table
233 \header \o Variable \o Contents
234 \row \o CONFIG \o General project configuration options.
235 \row \o DESTDIR \o The directory in which the executable or binary file will
236 be placed.
237 \row \o FORMS \o A list of UI files to be processed by \c uic.
238 \row \o HEADERS \o A list of filenames of header (.h) files used when
239 building the project.
240 \row \o QT \o Qt-specific configuration options.
241 \row \o RESOURCES \o A list of resource (.rc) files to be included in the
242 final project. See the \l{The Qt Resource System} for
243 more information about these files.
244 \row \o SOURCES \o A list of source code files to be used when building
245 the project.
246 \row \o TEMPLATE \o The template to use for the project. This determines
247 whether the output of the build process will be an
248 application, a library, or a plugin.
249 \endtable
250
251 The contents of a variable can be read by prepending the variable name with
252 \c $$. This can be used to assign the contents of one variable to another:
253
254 \snippet doc/src/snippets/qmake/dereferencing.pro 0
255
256 The \c $$ operator is used extensively with built-in functions that operate
257 on strings and lists of values. These are described in the chapter on
258 \l{qmake Advanced Usage}.
259
260 \section3 Whitespace
261
262 Normally, variables are used to contain whitespace-separated lists
263 of values. However, it is sometimes necessary to specify values containing
264 spaces. These must be quoted by using the
265 \l{qmake Function Reference#quote-string}{quote()} function in the following way:
266
267 \snippet doc/src/snippets/qmake/quoting.pro 0
268
269 The quoted text is treated as a single item in the list of values held by
270 the variable. A similar approach is used to deal with paths that contain
271 spaces, particularly when defining the
272 \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} and
273 \l{qmake Variable Reference#LIBS}{LIBS} variables for the Windows platform.
274 In cases like these, the \l{qmake Function Reference#quote(string)}{quote()}
275 function can be used in the following way:
276
277 \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
278
279 \section2 Comments
280
281 You can add comments to project files. Comments begin with the \c
282 # character and continue to the end of the same line. For example:
283
284 \snippet doc/src/snippets/qmake/comments.pro 0
285
286 To include the \c # character in variable assignments, it is necessary
287 to use the contents of the built-in \c LITERAL_HASH variable. See the
288 \l{qmake Variable Reference#LITERAL_HASH}{variable reference} for more
289 information.
290
291 \section2 Built-in Functions and Control Flow
292
293 \c qmake provides a number of built-in functions to allow the contents
294 of variables to be processed. The most commonly used function in simple
295 project files is the \c include function which takes a filename as an
296 argument. The contents of the given file are included in the project
297 file at the place where the \c include function is used.
298 The \c include function is most commonly used to include other project
299 files:
300
301 \snippet doc/src/snippets/qmake/include.pro 0
302
303 Support for conditional structures is made available via
304 \l{qmake Advanced Usage#scopes}{scopes} that behave like \c if
305 statements in programming languages:
306
307 \snippet doc/src/snippets/qmake/scopes.pro 0
308
309 The assignments inside the braces are only made if the condition is
310 true. In this case, the special \c win32 variable must be set; this
311 happens automatically on Windows, but this can also be specified on
312 other platforms by running \c qmake with the \c{-win32} command line
313 option (see \l{Running qmake} for more information). The opening
314 brace must stand on the same line as the condition.
315
316 Simple loops are constructed by iterating over lists of values using
317 the built-in \c for function. The following code adds directories
318 to the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable, but
319 only if they exist:
320
321 \snippet doc/src/snippets/qmake/functions.pro 0
322
323 More complex operations on variables that would usually require loops
324 are provided by built-in functions such as \c find, \c unique, and
325 \c count. These functions, and many others are provided to manipulate
326 strings and paths, support user input, and call external tools. A list
327 of the functions available can be found in the
328 \l{qmake Advanced Usage} chapter of this manual.
329
330 \section1 Project Templates
331
332 The \c TEMPLATE variable is used to define the type of project that will
333 be built. If this is not declared in the project file, \c qmake assumes
334 that an application should be built, and will generate an appropriate
335 Makefile (or equivalent file) for the purpose.
336
337 The types of project available are listed in the following table with
338 information about the files that \c qmake will generate for each of them:
339
340 \table
341 \header \o Template \o Description of \c qmake output
342 \row \o app (default) \o Creates a Makefile to build an application.
343 \row \o lib \o Creates a Makefile to build a library.
344 \row \o subdirs \o Creates a Makefile containing rules for the
345 subdirectories specified using the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
346 variable. Each subdirectory must contain its own project file.
347 \row \o vcapp \o Creates a Visual Studio Project file to build
348 an application.
349 \row \o vclib \o Creates a Visual Studio Project file to build a library.
350 \endtable
351
352 See the \l{qmake Tutorial} for advice on writing project files for
353 projects that use the \c app and \c lib templates.
354
355 When the \c subdirs template is used, \c qmake generates a Makefile
356 to examine each specified subdirectory, process any project file it finds
357 there, and run the platform's \c make tool on the newly-created Makefile.
358 The \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable is used to
359 contain a list of all the subdirectories to be processed.
360
361 \target GeneralConfiguration
362 \section1 General Configuration
363
364 The \l{qmake Variable Reference#CONFIG}{CONFIG variable} specifies the
365 options and features that the compiler should use and the libraries that
366 should be linked against. Anything can be added to the \c CONFIG variable,
367 but the options covered below are recognized by \c qmake internally.
368
369 The following options control the compiler flags that are used to build the
370 project:
371
372 \table
373 \header \o Option \o Description
374 \row \o release \o The project is to be built in release mode.
375 This is ignored if \c debug is also specified.
376 \row \o debug \o The project is to be built in debug mode.
377 \row \o debug_and_release \o The project is built in \e both debug and
378 release modes.
379 \row \o debug_and_release_target \o The project is built in \e both debug
380 and release modes. TARGET is built into \e both the debug and release directories.
381 \row \o build_all \o If \c debug_and_release is specified, the project is
382 built in both debug and release modes by default.
383 \row \o autogen_precompile_source \o Automatically generates a \c .cpp file that includes
384 the precompiled header file specified in the .pro file.
385 \row \o ordered \o When using the \c subdirs template, this option
386 specifies that the directories listed should be processed in the
387 order in which they are given.
388 \row \o warn_on \o The compiler should output as many warnings as possible.
389 This is ignored if \c warn_off is specified.
390 \row \o warn_off \o The compiler should output as few warnings as possible.
391 \row \o copy_dir_files \o Enables the install rule to also copy directories, not just files.
392 \endtable
393
394 The \c debug_and_release option is special in that it enables \e both debug and
395 release versions of a project to be built. In such a case, the Makefile that
396 \c qmake generates includes a rule that builds both versions, and this can be
397 invoked in the following way:
398
399 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 0
400
401 Adding the \c build_all option to the \c CONFIG variable makes this rule
402 the default when building the project, and installation targets will be
403 created for both debug and release builds.
404
405 Note that each of the options specified in the \c CONFIG variable can also be
406 used as a scope condition.
407 You can test for the presence of certain configuration options by using the
408 built-in \l{qmake Function Reference#CONFIG(config)}{CONFIG()} function.
409 For example, the following lines show the function as the condition in a scope
410 to test whether only the \c opengl option is in use:
411
412 \snippet doc/src/snippets/qmake/configscopes.pro 4
413 \snippet doc/src/snippets/qmake/configscopes.pro 5
414
415 This enables different configurations to be defined for \c release and
416 \c debug builds, and is described in more detail in the
417 \l{qmake Advanced Usage#Scopes}{Scopes} section of the
418 \l{qmake Advanced Usage}{Advanced Usage} chapter of this manual.
419
420 The following options define the type of project to be built. Note that some
421 of these options only take effect when used on the relevant platform. On other
422 platforms, they have no effect.
423
424 \table
425 \header \o Option \o Description
426 \row \o qt \o The project is a Qt application and should link against the Qt
427 library. You can use the \c QT variable to control any additional
428 Qt modules that are required by your application.
429 \row \o thread \o The project is a multi-threaded application.
430 \row \o x11 \o The project is an X11 application or library.
431 \endtable
432
433 When using \l{qmake Variable Reference#TEMPLATE}{application or library project
434 templates}, more specialized configuration options can be used to fine tune the
435 build process. These are explained in details in the
436 \l{qmake-common-projects.html}{Common Projects} chapter of this manual.
437
438 For example, if your application uses the Qt library and you want to
439 build it as a multi-threaded application in \c debug mode, your project
440 file will contain the following line:
441
442 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 1
443
444 Note, that you must use "+=", not "=", or \c qmake will not be able to
445 use Qt's configuration to determine the settings needed for your project.
446
447 \section1 Declaring Qt Libraries
448
449 If the \c CONFIG variable contains the \c qt value, qmake's support for Qt
450 applications is enabled. This makes it possible to fine-tune which of the
451 Qt modules are used by your application. This is achieved with the \c QT
452 variable which can be used to declare the required extension modules.
453 For example, we can enable the XML and network modules in the following way:
454
455 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 2
456
457 Note that \c QT includes the \c core and \c gui modules by default, so the
458 above declaration \e adds the network and XML modules to this default list.
459 The following assignment \e omits the default modules, and will lead to
460 errors when the application's source code is being compiled:
461
462 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 3
463
464 If you want to build a project \e without the \c gui module, you need to
465 exclude it with the "-=" operator. By default, \c QT contains both
466 \c core and \c gui, so the following line will result in a minimal
467 Qt project being built:
468
469 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 4
470
471 The table below shows the options that can be used with the \c QT variable
472 and the features that are associated with each of them:
473
474 \table
475 \header \o Option \o Features
476 \row \o core (included by default) \o QtCore module
477 \row \o gui (included by default) \o QtGui module
478 \row \o network \o QtNetwork module
479 \row \o opengl \o QtOpenGL module
480 \row \o sql \o QtSql module
481 \row \o svg \o QtSvg module
482 \row \o xml \o QtXml module
483 \row \o xmlpatterns \o QtXmlPatterns module
484 \row \o qt3support \o Qt3Support module
485 \endtable
486
487 Note that adding the \c opengl option to the \c QT variable automatically
488 causes the equivalent option to be added to the \c CONFIG variable.
489 Therefore, for Qt applications, it is not necessary to add the \c opengl
490 option to both \c CONFIG and \c{QT}.
491
492 \section1 Configuration Features
493
494 \c qmake can be set up with extra configuration features that are specified
495 in feature (.prf) files. These extra features often provide support for
496 custom tools that are used during the build process. To add a feature to
497 the build process, append the feature name (the stem of the feature filename)
498 to the \c CONFIG variable.
499
500 For example, \c qmake can configure the build process to take advantage
501 of external libraries that are supported by
502 \l{http://www.freedesktop.org/wiki/Software_2fpkgconfig}{pkg-config},
503 such as the D-Bus and ogg libraries, with the following lines:
504
505 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 5
506
507 More information about features can be found in the
508 \l{qmake Advanced Usage#Adding New Configuration Features}
509 {Adding New Configuration Features} section of the \l{qmake Advanced Usage}
510 chapter.
511
512 \section1 Declaring Other Libraries
513
514 If you are using other libraries in your project in addition to those
515 supplied with Qt, you need to specify them in your project file.
516
517 The paths that \c qmake searches for libraries and the specific libraries
518 to link against can be added to the list of values in the
519 \l{qmake Variable Reference#LIBS}{LIBS} variable. The paths to the libraries
520 themselves can be given, or the familiar Unix-style notation for specifying
521 libraries and paths can be used if preferred.
522
523 For example, the following lines show how a library can be specified:
524
525 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 6
526
527 The paths containing header files can also be specified in a similar way
528 using the \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} variable.
529
530 For example, it is possible to add several paths to be searched for header
531 files:
532
533 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 7
534*/
535
536/*!
537 \page qmake-running.html
538 \title Running qmake
539 \contentspage {qmake Manual}{Contents}
540 \previouspage qmake Project Files
541 \nextpage qmake Platform Notes
542
543 The behavior of \c qmake can be customized when it is run by
544 specifying various options on the command line. These allow the
545 build process to be fine-tuned, provide useful diagnostic
546 information, and can be used to specify the target platform for
547 your project.
548
549 \tableofcontents
550
551 \target Commands
552 \section1 Command-Line Options
553
554 \section2 Syntax
555
556 The syntax used to run \c qmake takes the following simple form:
557
558 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 8
559
560 \c qmake supports two different modes of operation: In the default mode,
561 \c qmake will use the description in a project file to generate a Makefile,
562 but it is also possible to use \c qmake to generate project files.
563 If you want to explicitly set the mode, you must specify it before all
564 other options. The \c mode can be either of the following two values:
565
566 \list
567 \o \c -makefile \BR
568 \c qmake output will be a Makefile.
569 \o \c -project \BR
570 \c qmake output will be a project file. \BR
571\bold{Note:} It is likely that the created file will need to be edited for example adding the \c QT variable to suit what modules are required for the project.
572 \endlist
573
574 The following \c options are used to specify both general and mode-specific
575 settings. Options that only apply to the Makefile mode are described in the
576 \l{#MakefileMode}{Makefile Mode Options} section; options that influence the
577 creation of project files are described in the
578 \l{#ProjectMode}{Project File Options} section.
579
580 The \c files argument represents a list of one or more project files, separated
581 by spaces.
582
583 \section2 Options
584
585 A wide range of options can be specified on the command line to \c qmake in
586 order to customize the build process, and to override default settings for
587 your platform. The following basic options provide usage information, specify
588 where \c qmake writes the output file, and control the level of debugging
589 information that will be written to the console:
590
591 \list
592 \o \c -help \BR
593 \c qmake will go over these features and give some useful help.
594 \o \c -o file \BR
595 \c qmake output will be directed to \e file. If this option
596 is not specified, \c qmake will try to use a suitable file name for its
597 output, depending on the mode it is running in.\BR
598 If '-' is specified, output is directed to stdout.
599 \o \c -d \BR
600 \c qmake will output debugging information.
601 \endlist
602
603 For projects that need to be built differently on each target platform, with
604 many subdirectories, you can run \c qmake with each of the following
605 options to set the corresponding platform-specific variable in each
606 project file:
607
608 \list
609 \o \c -unix \BR
610 \c qmake will run in unix mode. In this mode, Unix file
611 naming and path conventions will be used, additionally testing for \c unix
612 (as a scope) will succeed. This is the default mode on all Unices.
613 \o \c -macx \BR
614 \c qmake will run in Mac OS X mode. In this mode, Unix file
615 naming and path conventions will be used, additionally testing for \c macx
616 (as a scope) will succeed. This is the default mode on Mac OS X.
617 \o \c -win32 \BR
618 \c qmake will run in win32 mode. In this mode, Windows file naming and path
619 conventions will be used, additionally testing for \c win32 (as a scope)
620 will succeed. This is the default mode on Windows.
621 \endlist
622
623 The template used for the project is usually specified by the \c TEMPLATE
624 variable in the project file. We can override or modify this by using the
625 following options:
626
627 \list
628 \o \c -t tmpl \BR
629 \c qmake will override any set \c TEMPLATE variables with tmpl, but only
630 \e after the .pro file has been processed.
631 \o \c -tp prefix \BR
632 \c qmake will add the prefix to the \c TEMPLATE variable.
633 \endlist
634
635 The level of warning information can be fine-tuned to help you find problems in
636 your project file:
637
638 \list
639 \o \c -Wall \BR
640 \c qmake will report all known warnings.
641 \o \c -Wnone \BR
642 No warning information will be generated by \c qmake.
643 \o \c -Wparser \BR
644 \c qmake will only generate parser warnings. This will alert
645 you to common pitfalls and potential problems in the parsing of your
646 project files.
647 \o \c -Wlogic \BR
648 \c qmake will warn of common pitfalls and potential problems in your
649 project file. For example, \c qmake will report whether a file is placed
650 into a list of files multiple times, or if a file cannot be found.
651 \endlist
652
653 \target MakefileMode
654 \section2 Makefile Mode Options
655
656 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 9
657
658 In Makefile mode, \c qmake will generate a Makefile that is used to build the
659 project. Additionally, the following options may be used in this mode to
660 influence the way the project file is generated:
661
662 \list
663 \o \c -after \BR
664 \c qmake will process assignments given on the command line after
665 the specified files.
666 \o \c -nocache \BR
667 \c qmake will ignore the .qmake.cache file.
668 \o \c -nodepend \BR
669 \c qmake will not generate any dependency information.
670 \o \c -cache file \BR
671 \c qmake will use \e file as the cache file, ignoring any other
672 .qmake.cache files found.
673 \o \c -spec spec \BR
674 \c qmake will use \e spec as a path to platform and compiler information,
675 and the value of \c QMAKESPEC will be ignored.
676 \endlist
677
678 You may also pass \c qmake assignments on the command line;
679 they will be processed before all of the files specified. For example:
680
681 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 10
682
683 This will generate a Makefile, from test.pro with Unix pathnames. However
684 many of the specified options aren't necessary as they are the default.
685 Therefore, the line can be simplified on Unix to:
686
687 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 11
688
689 If you are certain you want your variables processed after the
690 files specified, then you may pass the \c -after option. When this
691 is specified, all assignments on the command line after the \c -after
692 option will be postponed until after the specified files are parsed.
693
694 \target ProjectMode
695 \section2 Project Mode Options
696
697 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 12
698
699 In project mode, \c qmake will generate a project file. Additionally, you
700 may supply the following options in this mode:
701
702 \list
703 \o \c -r \BR
704 \c qmake will look through supplied directories recursively
705 \o \c -nopwd \BR
706 \c qmake will not look in your current working directory for
707 source code and only use the specified \c files
708 \endlist
709
710 In this mode, the \c files argument can be a list of files or directories.
711 If a directory is specified, it will be included in the \c DEPENDPATH
712 variable, and relevant code from there will be included in the generated
713 project file. If a file is given, it will be appended to the correct
714 variable, depending on its extension; for example, UI files are added
715 to \c FORMS, and C++ files are added to \c SOURCES.
716
717 You may also pass assignments on the command line in this mode. When doing
718 so, these assignments will be placed last in the generated project file.
719*/
720
721/*!
722 \page qmake-platform-notes.html
723 \title qmake Platform Notes
724 \contentspage {qmake Manual}{Contents}
725 \previouspage Running qmake
726 \nextpage qmake Advanced Usage
727
728 Many cross-platform projects can be handled by the \c{qmake}'s basic
729 configuration features. On some platforms, it is sometimes useful, or even
730 necessary, to take advantage of platform-specific features. \c qmake knows
731 about many of these features, and these can be accessed via specific
732 variables that only have an effect on the platforms where they are relevant.
733
734 \tableofcontents
735
736 \section1 Mac OS X
737
738 Features specific to this platform include support for creating universal
739 binaries, frameworks and bundles.
740
741 \section2 Source and Binary Packages
742
743 The version of \c qmake supplied in source packages is configured slightly
744 differently to that supplied in binary packages in that it uses a different
745 feature specification. Where the source package typically uses the
746 \c macx-g++ specification, the binary package is typically configured to
747 use the \c macx-xcode specification.
748
749 Users of each package can override this configuration by invoking \c qmake
750 with the \c -spec option (see \l{Running qmake} for more information). This
751 makes it possible, for example, to use \c qmake from a binary package to
752 create a Makefile in a project directory with the following command line
753 invocation:
754
755 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 13
756
757 \section2 Using Frameworks
758
759 \c qmake is able to automatically generate build rules for linking against
760 frameworks in the standard framework directory on Mac OS X, located at
761 \c{/Library/Frameworks/}.
762
763 Directories other than the standard framework directory need to be specified
764 to the build system, and this is achieved by appending linker options to the
765 \l{qmake Variable Reference#QMAKE_LFLAGS}{QMAKE_LFLAGS} variable, as shown
766 in the following example:
767
768 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 14
769
770 The framework itself is linked in by appending the \c{-framework} options and
771 the name of the framework to the \l{qmake Variable Reference#LIBS}{LIBS}
772 variable:
773
774 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 15
775
776 \section2 Creating Frameworks
777
778 Any given library project can be configured so that the resulting library
779 file is placed in a
780 \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html}
781 {framework}, ready for deployment. To do this, set up the project to use the
782 \l{qmake Variable Reference#TEMPLATE}{\c lib template} and add the
783 \c lib_bundle option to the
784 \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
785
786 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 16
787
788 The data associated with the library is specified using the
789 \l{qmake Variable Reference#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA}
790 variable. This holds items that will be installed with a library
791 bundle, and is often used to specify a collection of header files,
792 as in the following example:
793
794 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 17
795
796 Here, the \c FRAMEWORK_HEADERS variable is a user-defined variable that
797 is used to define the headers required to use a particular framework.
798 Appending it to the \c QMAKE_BUNDLE_DATA variable ensures that the
799 information about these headers are added to the collection of
800 resources that will be installed with the library bundle. Also, the
801 framework's name and version are specified by
802 \l{qmake Variable Reference#QMAKE_FRAMEWORK_BUNDLE_NAME}
803 {QMAKE_FRAMEWORK_BUNDLE_NAME}
804 and \l{qmake Variable Reference#QMAKE_FRAMEWORK_VERSION}
805 {QMAKE_FRAMEWORK_VERSION} variables. By default, the values used for
806 these are obtained from the \l{qmake Variable Reference#TARGET}{TARGET}
807 and \l{qmake Variable Reference#VERSION}{VERSION} variables.
808
809 See \l{Deploying an Application on Mac OS X} for more information about
810 deploying applications and libraries.
811
812 \section2 Creating Universal Binaries
813
814 To create a universal binary for your application, you need to be using
815 a version of Qt that has been configured with the \c{-universal} option.
816
817 The architectures to be supported in the binary are specified with the
818 \l{qmake Variable Reference#CONFIG}{CONFIG} variable. For example, the
819 following assignment causes \c qmake to generate build rules to create
820 a universal binary for both PowerPC and x86 architectures:
821
822 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 18
823
824 Additionally, developers using a PowerPC-based platform need to set the
825 \l{qmake Variable Reference#QMAKE_MAC_SDK}{QMAKE_MAC_SDK} variable.
826 This process is discussed in more detail in the
827 \l{Deploying an Application on Mac OS X#Architecture Dependencies}{deployment guide for Mac OS X}.
828
829 \section2 Creating and Moving Xcode Projects
830
831 Developers on Mac OS X can take advantage of \c{qmake}'s support for Xcode
832 project files, as described in
833 \l{Qt is Mac OS X Native#Development Tools}{Qt is Mac OS X Native},
834 by running \c qmake to generate an Xcode project from an existing \c qmake
835 project files. For example:
836
837 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 19
838
839 Note that, if a project is later moved on the disk, \c qmake must be run
840 again to process the project file and create a new Xcode project file.
841
842 \section2 On supporting two build targets simultaneously
843
844 Implementing this is currently not feasible, because the XCode
845 concept of Active Build Configurations is conceptually different
846 from the qmake idea of build targets.
847
848 The XCode Active Build Configurations settings are for modifying
849 xcode configurations, compiler flags and similar build
850 options. Unlike Visual Studio, XCode does not allow for the
851 selection of specific library files based on whether debug or
852 release build configurations are selected. The qmake debug and
853 release settings control which library files are linked to the
854 executable.
855
856 It is currently not possible to set files in XCode configuration
857 settings from the qmake generated xcode project file. The way the
858 libraries are linked in the "Frameworks & Libraries" phase in the
859 XCode build system.
860
861 Furthermore, The selected "Active Build Configuration" is stored
862 in a .pbxuser file, which is generated by xcode on first load, not
863 created by qmake.
864
865 \section1 Windows
866
867 Features specific to this platform include support for creating Visual
868 Studio project files and handling manifest files when deploying Qt
869 applications developed using Visual Studio 2005.
870
871 \section2 Creating Visual Studio Project Files
872
873 Developers using Visual Studio to write Qt applications can use the
874 Visual Studio integration facilities provided with the
875 \l{Qt Commercial Editions} and do not need to worry about how
876 project dependencies are managed.
877
878 However, some developers may need to import an existing \c qmake project
879 into Visual Studio. \c qmake is able to take a project file and create a
880 Visual Studio project that contains all the necessary information required
881 by the development environment. This is achieved by setting the \c qmake
882 \l{qmake Variable Reference#TEMPLATE}{project template} to either \c vcapp
883 (for application projects) or \c vclib (for library projects).
884
885 This can also be set using a command line option, for example:
886
887 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 20
888
889 It is possible to recursively generate \c{.vcproj} files in subdirectories
890 and a \c{.sln} file in the main directory, by typing:
891
892 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 21
893
894 Each time you update the project file, you need to run \c qmake to generate
895 an updated Visual Studio project.
896
897 \note If you are using the Visual Studio Add-in, you can import \c .pro
898 files via the \gui{Qt->Import from .pro file} menu item.
899
900 \section2 Visual Studio 2005 Manifest Files
901
902 When deploying Qt applications built using Visual Studio 2005, it is
903 necessary to ensure that the manifest file, created when the application
904 was linked, is handled correctly. This is handled automatically for
905 projects that generate DLLs.
906
907 Removing manifest embedding for application executables can be done with
908 the following assignment to the \l{qmake Variable Reference#CONFIG}
909 {CONFIG} variable:
910
911 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 22
912
913 Also, the manifest embedding for DLLs can be removed with the following
914 assignment to the \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
915
916 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 23
917
918 This is discussed in more detail in the
919 \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
920 {deployment guide for Windows}.
921
922
923 \section1 Symbian platform
924
925 Features specific to this platform include handling of static data,
926 capabilities, stack and heap size, compiler specific options, and unique
927 identifiers for the application or library.
928
929 \section2 Handling of static data
930
931 If the application uses any static data, the build system needs to be
932 informed about it. This is because Symbian tries to save memory if no
933 static data is in use.
934
935 To specify that static data support is desired, add this to the project file:
936
937 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 129
938
939 The default value is zero.
940
941 \section2 Stack and heap size
942
943 The Symbian platform uses predefined sizes for stacks and heaps. If an
944 application exceeds either limit, it may crash or fail to complete its
945 task. Crashes that seem to have no reason can often be traced back to
946 insufficient stack and/or heap sizes.
947
948 The stack size has a maximum value, whereas the heap size has a
949 minimum and a maximum value, all specified in bytes. The minimum value
950 prevents the application from starting if that amount of memory is not available. The
951 minimum and maximum values are separated by a space. For example:
952
953 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 130
954
955 The default values depend on the version of the Symbian SDK you're using.
956
957 \section2 Compiler specific options
958
959 General compiler options can as usual be set using \c QMAKE_CFLAGS and \c QMAKE_CXXFLAGS.
960 In order to set specific compiler options, \c QMAKE_CFLAGS.<compiler> and
961 \c QMAKE_CXXFLAGS.<compiler> can be used. \c <compiler> can be either \c CW for the WINSCW
962 architecture (emulator), or \c ARMCC for the ARMv5 architecture (hardware), or \c GCCE for
963 the ARMv5 architecture (hardware).
964
965 Here is an example:
966
967 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
968
969 \section2 Unique identifiers
970
971 Symbian applications may have unique identifiers attached to them.
972 Here is how to define them in a project file:
973
974 There are four types of IDs supported: \c UID2, \c UID3, \c SID, and \c VID. They
975 are specified like this:
976
977 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 132
978
979 If \c UID2 is not specified, it defaults to the same value as \c UID3.
980 If \c UID3 is not specified, qmake will automatically generate a \c UID3
981 suitable for development and debugging. This value should be manually
982 specified for applications that are to be released. In order to optain
983 an official UID, please contact Nokia. Both \c SID and \c VID default to empty values.
984
985 For more information about unique identifiers and their meaning for
986 Symbian applications, please refer to the Symbian SDK documentation.
987
988 \section2 Capabilities
989
990 Capabilities define extra priviledges for the application, such as the
991 ability to list all files on the file system. Capabilities are defined
992 in the project file like this:
993
994 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 133
995
996 It is also possible to specify which capabilities \e not to have,
997 by first specifying \c ALL and then list the unwanted capabilities
998 with a minus in front of them, like this:
999
1000 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 134
1001
1002 For more information about capabilities, please refer to the Symbian SDK documentation.
1003*/
1004
1005/*!
1006 \page qmake-reference.html
1007 \title qmake Reference
1008 \contentspage {qmake Manual}{Contents}
1009 \previouspage Using Precompiled Headers
1010 \nextpage qmake Variable Reference
1011
1012 This reference is a detailed index of all the variables and function
1013 that are available for use in \c qmake project files.
1014
1015 \section1 Variable Reference
1016
1017 The \l{qmake Variable Reference} describes the variables that are
1018 recognized by \c qmake when configuring the build process for
1019 projects.
1020
1021 \section1 Function Reference
1022
1023 The \l{qmake Function Reference} describes the function that can be
1024 used to process the contents of variables defined in project files.
1025
1026 \target FrequentlyUsedVariables
1027 \section1 Frequently Used Variables
1028
1029 The following variables are frequently used in project files to describe
1030 common aspects of the build process. These are fully described in the
1031 \l{qmake-variable-reference.html}{Variable Reference}.
1032
1033 \list
1034 \o \l{qmake Variable Reference#CONFIG}{CONFIG}
1035 \o \l{qmake Variable Reference#DEF_FILE}{DEF_FILE}
1036 \o \l{qmake Variable Reference#DEFINES}{DEFINES}
1037 \o \l{qmake Variable Reference#DESTDIR}{DESTDIR}
1038 \o \l{qmake Variable Reference#DISTFILES}{DISTFILES}
1039 \o \l{qmake Variable Reference#DLLDESTDIR}{DLLDESTDIR}
1040 \o \l{qmake Variable Reference#FORMS}{FORMS}
1041 \o \l{qmake Variable Reference#FORMS3}{FORMS3}
1042 \o \l{qmake Variable Reference#GUID}{GUID}
1043 \o \l{qmake Variable Reference#HEADERS}{HEADERS}
1044 \o \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH}
1045 \o \l{qmake Variable Reference#LEXSOURCES}{LEXSOURCES}
1046 \o \l{qmake Variable Reference#LIBS}{LIBS}
1047 \o \l{qmake Variable Reference#MOC_DIR}{MOC_DIR}
1048 \o \l{qmake Variable Reference#OBJECTS_DIR}{OBJECTS_DIR}
1049 \o \l{qmake Variable Reference#QT}{QT}
1050 \o \l{qmake Variable Reference#RCC_DIR}{RCC_DIR}
1051 \o \l{qmake Variable Reference#REQUIRES}{REQUIRES}
1052 \o \l{qmake Variable Reference#RESOURCES}{RESOURCES}
1053 \o \l{qmake Variable Reference#SOURCES}{SOURCES}
1054 \o \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
1055 \o \l{qmake Variable Reference#TARGET}{TARGET}
1056 \o \l{qmake Variable Reference#TEMPLATE}{TEMPLATE}
1057 \o \l{qmake Variable Reference#TRANSLATIONS}{TRANSLATIONS}
1058 \o \l{qmake Variable Reference#UI_DIR}{UI_DIR}
1059 \o \l{qmake Variable Reference#UI_HEADERS_DIR}{UI_HEADERS_DIR}
1060 \o \l{qmake Variable Reference#UI_SOURCES_DIR}{UI_SOURCES_DIR}
1061 \o \l{qmake Variable Reference#VERSION}{VERSION}
1062 \o \l{qmake Variable Reference#YACCSOURCES}{YACCSOURCES}
1063 \endlist
1064
1065 \section1 Environment Variables and Configuration
1066
1067 The \l{Configuring qmake's Environment} chapter of this manual
1068 describes the environment variables that \c qmake uses when
1069 configuring the build process.
1070*/
1071
1072/*!
1073 \page qmake-variable-reference.html
1074 \title qmake Variable Reference
1075 \contentspage {qmake Manual}{Contents}
1076 \previouspage qmake Reference
1077 \nextpage qmake Function Reference
1078
1079 \c{qmake}'s fundamental behavior is influenced by variable declarations that
1080 define the build process of each project. Some of these declare resources,
1081 such as headers and source files, that are common to each platform; others
1082 are used to customize the behavior of compilers and linkers on specific
1083 platforms.
1084
1085 Platform-specific variables follow the naming pattern of the
1086 variables which they extend or modify, but include the name of the relevant
1087 platform in their name. For example, \c QMAKE_LIBS can be used to specify a list
1088 of libraries that a project needs to link against, and \c QMAKE_LIBS_X11 can be
1089 used to extend or override this list.
1090
1091 \tableofcontents{3}
1092
1093 \target BLD_INF_RULES
1094 \section1 BLD_INF_RULES
1095
1096 \e {This is only used on the Symbian platform.}
1097
1098 Generic \c bld.inf file content can be specified with \c BLD_INF_RULES variables.
1099 The section of \c bld.inf file where each rule goes is appended to
1100 \c BLD_INF_RULES with a dot.
1101
1102 For example:
1103
1104 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 146
1105
1106 This will add the specified statements to the \c prj_exports section of the
1107 generated \c bld.inf file.
1108
1109 It is also possible to add multiple rows in a single block. Each double
1110 quoted string will be placed on a new row in the generated \c bld.inf file.
1111
1112 For example:
1113
1114 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 143
1115
1116 Any rules you define will be added after automatically generated
1117 rules in each section.
1118
1119 \target CONFIG
1120 \section1 CONFIG
1121
1122 The \c CONFIG variable specifies project configuration and
1123 compiler options. The values will be recognized internally by
1124 \c qmake and have special meaning. They are as follows.
1125
1126 These \c CONFIG values control compilation flags:
1127
1128 \table 95%
1129 \header \o Option \o Description
1130 \row \o release \o The project is to be built in release mode.
1131 This is ignored if \c debug is also specified.
1132 \row \o debug \o The project is to be built in debug mode.
1133 \row \o debug_and_release \o The project is built in \e both debug and
1134 release modes. This can have some unexpected side effects (see
1135 below for more information).
1136 \row \o build_all \o If \c debug_and_release is specified, the project is
1137 built in both debug and release modes by default.
1138 \row \o ordered \o When using the \c subdirs template, this option
1139 specifies that the directories listed should be processed in the
1140 order in which they are given.
1141 \row \o precompile_header \o Enables support for the use of
1142 \l{Using Precompiled Headers}{precompiled headers} in projects.
1143 \row \o warn_on \o The compiler should output as many warnings as possible.
1144 This is ignored if \c warn_off is specified.
1145 \row \o warn_off \o The compiler should output as few warnings as possible.
1146 \omit
1147 \row \o qt_debug \o Specifies that the project should be built against
1148 debug versions of the Qt libraries specified using the
1149 \l{#QT}{QT} variable.
1150 \row \o qt_release \o Specifies that the project should be built against
1151 release versions of the Qt libraries specified using the
1152 \l{#QT}{QT} variable.
1153 \endomit
1154 \endtable
1155
1156 Since the \c debug option overrides the \c release option when both are
1157 defined in the \c CONFIG variable, it is necessary to use the
1158 \c debug_and_release option if you want to allow both debug and release
1159 versions of a project to be built. In such a case, the Makefile that
1160 \c qmake generates includes a rule that builds both versions, and this can
1161 be invoked in the following way:
1162
1163 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 24
1164
1165 When linking a library, \c qmake relies on the underlying platform to know
1166 what other libraries this library links against. However, if linking
1167 statically, \c qmake will not get this information unless we use the following
1168 \c CONFIG options:
1169
1170 \table 95%
1171 \header \o Option \o Description
1172 \row \o create_prl \o This option enables \c qmake to track these
1173 dependencies. When this option is enabled, \c qmake will create a file
1174 ending in \c .prl which will save meta-information about the library
1175 (see \l{LibDepend}{Library Dependencies} for more info).
1176 \row \o link_prl \o When this is enabled, \c qmake will process all
1177 libraries linked to by the application and find their meta-information
1178 (see \l{LibDepend}{Library Dependencies} for more info).
1179 \endtable
1180
1181 Please note that \c create_prl is required when \e {building} a
1182 static library, while \c link_prl is required when \e {using} a
1183 static library.
1184
1185 On Windows (or if Qt is configured with \c{-debug_and_release}, adding the
1186 \c build_all option to the \c CONFIG variable makes this rule the default
1187 when building the project, and installation targets will be created for
1188 both debug and release builds.
1189
1190 Additionally, adding \c debug_and_release to the \c CONFIG variable will
1191 cause both \c debug and \c release to be defined in the contents of
1192 \c CONFIG. When the project file is processed, the
1193 \l{qmake Advanced Usage#Scopes}{scopes} that test for each value will be
1194 processed for \e both debug and release modes. The \c{build_pass} variable
1195 will be set for each of these mode, and you can test for this to perform
1196 build-specific tasks. For example:
1197
1198 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 25
1199
1200 As a result, it may be useful to define mode-specific variables, such as
1201 \l{#QMAKE_LFLAGS_RELEASE}{QMAKE_LFLAGS_RELEASE}, instead of general
1202 variables, such as \l{#QMAKE_LFLAGS}{QMAKE_LFLAGS}, where possible.
1203
1204 The following options define the application/library type:
1205
1206 \table 95%
1207 \header \o Option \o Description
1208 \row \o qt \o The target is a Qt application/library and requires the Qt
1209 library and header files. The proper include and library paths for the
1210 Qt library will automatically be added to the project. This is defined
1211 by default, and can be fine-tuned with the \c{\l{#qt}{QT}} variable.
1212 \row \o thread \o The target is a multi-threaded application or library. The
1213 proper defines and compiler flags will automatically be added to
1214 the project.
1215 \row \o x11 \o The target is a X11 application or library. The proper
1216 include paths and libraries will automatically be added to the
1217 project.
1218 \row \o windows \o The target is a Win32 window application (app only). The
1219 proper include paths, compiler flags and libraries will
1220 automatically be added to the project.
1221 \row \o console \o The target is a Win32 console application (app only). The
1222 proper include paths, compiler flags and libraries will
1223 automatically be added to the
1224 project.
1225 \row \o shared \o{1,3} The target is a shared object/DLL. The proper
1226 include paths, compiler flags and libraries will automatically be
1227 added to the project.
1228 \row \o dll \o
1229 \row \o dylib \o
1230 \row \o static \o{1,2} The target is a static library (lib only). The proper
1231 compiler flags will automatically be added to the project.
1232 \row \o staticlib \o
1233 \row \o plugin \o The target is a plugin (lib only). This enables dll as well.
1234 \row \o designer \o The target is a plugin for \QD.
1235 \row \o uic3 \o Configures qmake to run uic3 on the content of \c FORMS3 if
1236 defined; otherwise the contents of \c FORMS will be processed instead.
1237 \row \o no_lflags_merge \o Ensures that the list of libraries stored in the
1238 \c LIBS variable is not reduced to a list of unique values before it is used.
1239 \row \o resources \o Configures qmake to run rcc on the content of \c RESOURCES
1240 if defined.
1241 \endtable
1242
1243 These options are used to set the compiler flags:
1244
1245 \table 95%
1246 \header \o Option \o Description
1247 \row \o 3dnow \o AMD 3DNow! instruction support is enabled.
1248 \row \o exceptions \o Exception support is enabled.
1249 \row \o mmx \o Intel MMX instruction support is enabled.
1250 \row \o rtti \o RTTI support is enabled.
1251 \row \o stl \o STL support is enabled.
1252 \row \o sse \o SSE support is enabled.
1253 \row \o sse2 \o SSE2 support is enabled.
1254 \endtable
1255
1256 These options define specific features on Windows only:
1257
1258 \table 95%
1259 \header \o Option \o Description
1260 \row \o flat \o When using the vcapp template this will put all the source
1261 files into the source group and the header files into the header group
1262 regardless of what directory they reside in. Turning this
1263 option off will group the files within the source/header group depending
1264 on the directory they reside. This is turned on by default.
1265 \row \o embed_manifest_dll \o Embeds a manifest file in the DLL created
1266 as part of a library project.
1267 \row \o embed_manifest_exe \o Embeds a manifest file in the DLL created
1268 as part of an application project.
1269 \row \o incremental \o Used to enable or disable incremental linking in Visual
1270 C++, depending on whether this feature is enabled or disabled by default.
1271 \endtable
1272
1273 See \l{qmake Platform Notes#Visual Studio 2005 Manifest Files}{qmake Platform Notes}
1274 for more information on the options for embedding manifest files.
1275
1276 These options only have an effect on Mac OS X:
1277
1278 \table 95%
1279 \header \o Option \o Description
1280 \row \o ppc \o Builds a PowerPC binary.
1281 \row \o x86 \o Builds an i386 compatible binary.
1282 \row \o app_bundle \o Puts the executable into a bundle (this is the default).
1283 \row \o lib_bundle \o Puts the library into a library bundle.
1284 \endtable
1285
1286 The build process for bundles is also influenced by
1287 the contents of the \l{#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA} variable.
1288
1289 These options only have an effect on the Symbian platform:
1290
1291 \table 95%
1292 \header \o Option \o Description
1293 \row \o stdbinary \o Builds an Open C binary (i.e. STDDLL, STDEXE, or STDLIB,
1294 depending on the target binary type.)
1295 \row \o no_icon \o Doesn't generate resources needed for displaying an icon
1296 for executable in application menu (app only).
1297 \row \o symbian_test \o Places mmp files and extension makefiles under
1298 test sections in generated bld.inf instead of their regular sections.
1299 Note that this only affects automatically generated bld.inf content;
1300 the content added via \c BLD_INF_RULES variable is not affected.
1301 \endtable
1302
1303 These options have an effect on Linux/Unix platforms:
1304
1305 \table 95%
1306 \header \o Option \o Description
1307 \row \o largefile \o Includes support for large files.
1308 \row \o separate_debug_info \o Puts debugging information for libraries in
1309 separate files.
1310 \endtable
1311
1312 The \c CONFIG variable will also be checked when resolving scopes. You may
1313 assign anything to this variable.
1314
1315 For example:
1316
1317 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 26
1318
1319 \target DEFINES
1320 \section1 DEFINES
1321
1322 \c qmake adds the values of this variable as compiler C
1323 preprocessor macros (-D option).
1324
1325 For example:
1326
1327 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 27
1328
1329 \target DEF_FILE
1330 \section1 DEF_FILE
1331
1332 \e {This is only used on Windows when using the \c app template}.
1333
1334 Specifies a \c .def file to be included in the project.
1335
1336 \target DEPENDPATH
1337 \section1 DEPENDPATH
1338
1339 This variable contains the list of all directories to look in to
1340 resolve dependencies. This will be used when crawling through
1341 \c included files.
1342
1343 \target DEPLOYMENT
1344 \section1 DEPLOYMENT
1345
1346 \e {This is only used on Windows CE and the Symbian platform.}
1347
1348 Specifies which additional files will be deployed. Deployment means the
1349 transfer of files from the development system to the target device or
1350 emulator.
1351
1352 Files can be deployed by either creating a Visual Studio project or using
1353 the \l {Using QTestLib remotely on Windows CE}{cetest} executable.
1354
1355 For example:
1356
1357 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 28
1358
1359 This will upload all PNG images in \c path to the same directory your
1360 build target will be deployed to.
1361
1362 The default deployment target path for Windows CE is
1363 \c{%CSIDL_PROGRAM_FILES%\target}, which usually gets expanded to
1364 \c{\Program Files\target}. For the Symbian platform, the default target
1365is the application private directory on the drive it is installed to.
1366
1367 It is also possible to specify multiple \c sources to be deployed on
1368 target \c paths. In addition, different variables can be used for
1369 deployment to different directories.
1370
1371 For example:
1372
1373 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 29
1374
1375 \note In Windows CE all linked Qt libraries will be deployed to the path
1376 specified by \c{myFiles.path}. On Symbian platform all libraries and executables
1377 will always be deployed to the \\sys\\bin of the installation drive.
1378
1379 Since the Symbian platform build system automatically moves binaries to certain
1380 directories under the epoc32 directory, custom plugins, executables or
1381 dynamically loadable libraries need special handling. When deploying
1382 extra executables or dynamically loadable libraries, the target path
1383 must specify \\sys\\bin. For plugins, the target path must specify the
1384 location where the plugin stub will be deployed to (see the
1385 \l{How to Create Qt Plugins} document for more information about plugins).
1386 If the binary cannot be found from the indicated source path,
1387 the directory Symbian build process moves the executables to is
1388 searched, e.g. \\epoc32\\release\\armv5\\urel.
1389
1390 For example:
1391
1392 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 128
1393
1394 On the Symbian platform, generic PKG file content can also be specified with this
1395 variable. You can use either \c pkg_prerules or \c pkg_postrules to
1396 pass raw data to PKG file. The strings in \c pkg_prerules are added before
1397 package-body and \c pkg_postrules after. The strings defined in
1398 \c pkg_postrules or \c pkg_prerules are not parsed by qmake, so they
1399 should be in a format understood by Symbian package generation tools.
1400 Please consult the Symbian platform documentation for correct syntax.
1401
1402 For example, to deploy DLL and add a new dependency:
1403
1404 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 140
1405
1406 Please note that \c pkg_prerules can also replace default statements in
1407 pkg file. If no pkg_prerules is defined, qmake makes sure that PKG file
1408 syntax is correct and it contains all mandatory statements such as:
1409
1410 \list
1411 \o languages, for example \BR
1412 &EN,FR
1413 \o package-header, for example \BR
1414 #{"MyApp-EN", "MyApp-FR"}, (0x1000001F), 1, 2, 3, TYPE=SA
1415 \o localized and unique vendor, for example \BR
1416 %{"Vendor-EN", ..., "Vendor-FR"}
1417 :"Unique vendor name"
1418 \endlist
1419
1420 If you decide to override any of these statements, you need to pay
1421 attention that also other statements stay valid. For example if you
1422 override languages statement, you must override also package-header
1423 statement and all other statements which are language specific.
1424
1425 On the Symbian platform, the \c default_deployment item specifies
1426 default platform dependencies. It can be overwritten if a more
1427 restrictive set is needed - e.g. if a specific
1428 device is required to run the application.
1429
1430 For example:
1431
1432 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 141
1433
1434 \target DEPLOYMENT_PLUGIN
1435 \section1 DEPLOYMENT_PLUGIN
1436
1437 \e {This is only used on Windows CE and the Symbian platform.}
1438
1439 This variable specifies the Qt plugins that will be deployed. All plugins
1440 available in Qt can be explicitly deployed to the device. See
1441 \l{Static Plugins}{Static Plugins} for a complete list.
1442
1443 \note In Windows CE, No plugins will be deployed automatically.
1444 If the application depends on plugins, these plugins have to be specified
1445 manually.
1446
1447 \note On the Symbian platform, all plugins supported by this variable
1448will be deployed by default with Qt libraries, so generally using this
1449variable is not needed.
1450
1451 For example:
1452
1453 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 142
1454
1455 This will upload the jpeg imageformat plugin to the plugins directory
1456 on the Windows CE device.
1457
1458 \target DESTDIR
1459 \section1 DESTDIR
1460
1461 Specifies where to put the \l{#TARGET}{target} file.
1462
1463 For example:
1464
1465 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 30
1466
1467 \target DESTDIR_TARGET
1468 \section1 DESTDIR_TARGET
1469
1470 This variable is set internally by \c qmake, which is basically the
1471 \c DESTDIR variable with the \c TARGET variable appened at the end.
1472 The value of this variable is typically handled by \c qmake or
1473 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1474
1475 \target DLLDESTDIR
1476 \section1 DLLDESTDIR
1477
1478 Specifies where to copy the \l{#TARGET}{target} dll.
1479
1480 \target DISTFILES
1481 \section1 DISTFILES
1482
1483 This variable contains a list of files to be included in the dist
1484 target. This feature is supported by UnixMake specs only.
1485
1486 For example:
1487
1488 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 31
1489
1490 \target DSP_TEMPLATE
1491 \section1 DSP_TEMPLATE
1492
1493 This variable is set internally by \c qmake, which specifies where the
1494 dsp template file for basing generated dsp files is stored. The value
1495 of this variable is typically handled by \c qmake or
1496 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1497
1498 \target FORMS
1499 \section1 FORMS
1500
1501 This variable specifies the UI files (see \link
1502 designer-manual.html Qt Designer \endlink) to be processed through \c uic
1503 before compiling. All dependencies, headers and source files required
1504 to build these UI files will automatically be added to the project.
1505
1506 For example:
1507
1508 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 32
1509
1510 If FORMS3 is defined in your project, then this variable must contain
1511 forms for uic, and not uic3. If CONFIG contains uic3, and FORMS3 is not
1512 defined, the this variable must contain only uic3 type forms.
1513
1514 \target FORMS3
1515 \section1 FORMS3
1516
1517 This variable specifies the old style UI files to be processed
1518 through \c uic3 before compiling, when \c CONFIG contains uic3.
1519 All dependencies, headers and source files required to build these
1520 UI files will automatically be added to the project.
1521
1522 For example:
1523
1524 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 33
1525
1526 \target GUID
1527 \section1 GUID
1528
1529 Specifies the GUID that is set inside a \c{.vcproj} file. The GUID is
1530 usually randomly determined. However, should you require a fixed GUID,
1531 it can be set using this variable.
1532
1533 This variable is specific to \c{.vcproj} files only; it is ignored
1534 otherwise.
1535
1536 \target HEADERS
1537 \section1 HEADERS
1538
1539 Defines the header files for the project.
1540
1541 \c qmake will generate dependency information (unless \c -nodepend
1542 is specified on the \l{Running qmake#Commands}{command line})
1543 for the specified headers. \c qmake will also automatically detect if
1544 \c moc is required by the classes in these headers, and add the
1545 appropriate dependencies and files to the project for generating and
1546 linking the moc files.
1547
1548 For example:
1549
1550 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 34
1551
1552 See also \l{#SOURCES}{SOURCES}.
1553
1554 \target ICON
1555 \section1 ICON
1556
1557 This variable is used only in MAC and the Symbian platform to set the application icon.
1558 Please see \l{Setting the Application Icon}{the application icon documentation}
1559 for more information.
1560
1561 \target INCLUDEPATH
1562 \section1 INCLUDEPATH
1563
1564 This variable specifies the #include directories which should be
1565 searched when compiling the project. Use ';' or a space as the
1566 directory separator.
1567
1568 For example:
1569
1570 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 35
1571
1572 To specify a path containing spaces, quote the path using the technique
1573 mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
1574 document. For example, paths with spaces can be specified on Windows
1575 and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
1576 function in the following way:
1577
1578 \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
1579
1580 \target INSTALLS
1581 \section1 INSTALLS
1582
1583 This variable contains a list of resources that will be installed when
1584 \c{make install} or a similar installation procedure is executed. Each
1585 item in the list is typically defined with attributes that provide
1586 information about where it will be installed.
1587
1588 For example, the following \c{target.path} definition describes where the
1589 build target will be installed, and the \c INSTALLS assignment adds the
1590 build target to the list of existing resources to be installed:
1591
1592 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 36
1593
1594 \target LEXIMPLS
1595 \section1 LEXIMPLS
1596
1597 This variable contains a list of lex implementation files. The value
1598 of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
1599 needs to be modified.
1600
1601 \target LEXOBJECTS
1602 \section1 LEXOBJECTS
1603
1604 This variable contains the names of intermediate lex object
1605 files.The value of this variable is typically handled by
1606 \c qmake and rarely needs to be modified.
1607
1608 \target LEXSOURCES
1609 \section1 LEXSOURCES
1610
1611 This variable contains a list of lex source files. All
1612 dependencies, headers and source files will automatically be added to
1613 the project for building these lex files.
1614
1615 For example:
1616
1617 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 37
1618
1619 \target LIBS
1620 \section1 LIBS
1621
1622 This variable contains a list of libraries to be linked into the project.
1623 You can use the Unix \c -l (library) and -L (library path) flags and qmake
1624 will do the correct thing with these libraries on Windows and the
1625 Symbian platform (namely this means passing the full path of the library to
1626 the linker). The only limitation to this is the library must exist, for
1627 qmake to find which directory a \c -l lib lives in.
1628
1629 For example:
1630
1631 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 38
1632
1633 To specify a path containing spaces, quote the path using the technique
1634 mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
1635 document. For example, paths with spaces can be specified on Windows
1636 and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
1637 function in the following way:
1638
1639 \snippet doc/src/snippets/qmake/spaces.pro quoting library paths with spaces
1640
1641 \bold{Note:} On Windows, specifying libraries with the \c{-l} option,
1642 as in the above example, will cause the library with the highest version
1643 number to be used; for example, \c{libmath2.lib} could potentially be used
1644 instead of \c{libmathlib}. To avoid this ambiguity, we recommend that you
1645 explicitly specify the library to be used by including the \c{.lib}
1646 file name suffix.
1647
1648 \bold{Note:} On the Symbian platform, the build system makes a
1649distinction between shared and
1650 static libraries. In most cases, qmake will figure out which library you
1651 are refering to, but in some cases you may have to specify it explicitly to
1652 get the expected behavior. This typically happens if you are building a
1653 library and using it in the same project. To specify that the library is
1654 either shared or static, add a ".dll" or ".lib" suffix, respectively, to the
1655 library name.
1656
1657 By default, the list of libraries stored in \c LIBS is reduced to a list of
1658 unique names before it is used. To change this behavior, add the
1659 \c no_lflags_merge option to the \c CONFIG variable:
1660
1661 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 39
1662
1663 \target LITERAL_HASH
1664 \section1 LITERAL_HASH
1665
1666 This variable is used whenever a literal hash character (\c{#}) is needed in
1667 a variable declaration, perhaps as part of a file name or in a string passed
1668 to some external application.
1669
1670 For example:
1671
1672 \snippet doc/src/snippets/qmake/comments.pro 1
1673
1674 By using \c LITERAL_HASH in this way, the \c # character can be used
1675 to construct a URL for the \c message() function to print to the console.
1676
1677 \target MAKEFILE
1678 \section1 MAKEFILE
1679
1680 This variable specifies the name of the Makefile which
1681 \c qmake should use when outputting the dependency information
1682 for building a project. The value of this variable is typically
1683 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1684
1685 \target MAKEFILE_GENERATOR
1686 \section1 MAKEFILE_GENERATOR
1687
1688 This variable contains the name of the Makefile generator to use
1689 when generating a Makefile. The value of this variable is typically
1690 handled internally by \c qmake and rarely needs to be modified.
1691
1692 \target MMP_RULES
1693 \section1 MMP_RULES
1694
1695 \e {This is only used on the Symbian platform.}
1696
1697 Generic MMP file content can be specified with this variable.
1698
1699 For example:
1700
1701 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 137
1702
1703 This will add the specified statement to the end of the generated MMP file.
1704
1705 It is also possible to add multiple rows in a single block. Each double
1706 quoted string will be placed on a new row in the generated MMP file.
1707
1708 For example:
1709
1710 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 138
1711
1712 If you need to include a hash (\c{#}) character inside the
1713 \c MMP_RULES statement, it can be done with the variable
1714 \c LITERAL_HASH as follows:
1715
1716 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 139
1717
1718 \note You should not use this variable to add MMP statements that are
1719 explicitly supported by their own variables, such as
1720 \c TARGET.EPOCSTACKSIZE.
1721 Doing so could result in duplicate statements in the MMP file.
1722
1723 \target MOC_DIR
1724 \section1 MOC_DIR
1725
1726 This variable specifies the directory where all intermediate moc
1727 files should be placed.
1728
1729 For example:
1730
1731 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 40
1732
1733 \target OBJECTS
1734 \section1 OBJECTS
1735
1736 This variable is generated from the \link #SOURCES SOURCES
1737 \endlink variable. The extension of each source file will have been
1738 replaced by .o (Unix) or .obj (Win32). The value of this variable is
1739 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1740 rarely needs to be modified.
1741
1742 \target OBJECTS_DIR
1743 \section1 OBJECTS_DIR
1744
1745 This variable specifies the directory where all intermediate
1746 objects should be placed.
1747
1748 For example:
1749
1750 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 41
1751
1752 \target OBJMOC
1753 \section1 OBJMOC
1754
1755 This variable is set by \c qmake if files can be found that
1756 contain the Q_OBJECT macro. \c OBJMOC contains the
1757 name of all intermediate moc object files. The value of this variable
1758 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1759 modified.
1760
1761 \target POST_TARGETDEPS
1762 \section1 POST_TARGETDEPS
1763
1764 All libraries that the \l{#TARGET}{target} depends on can be
1765 listed in this variable. Some backends do not support this, these include
1766 MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
1767 internally by these build tools, this is useful for explicitly listing
1768 dependant static libraries.
1769
1770 This list will go after all builtin (and \link #PRE_TARGETDEPS
1771 $$PRE_TARGETDEPS \endlink) dependencies.
1772
1773 \target PRE_TARGETDEPS
1774 \section1 PRE_TARGETDEPS
1775
1776 All libraries that the \l{#TARGET}{target} depends on can be
1777 listed in this variable. Some backends do not support this, these include
1778 MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
1779 internally by these build tools, this is useful for explicitly listing
1780 dependant static libraries.
1781
1782 This list will go before all builtin dependencies.
1783
1784 \target PRECOMPILED_HEADER
1785 \section1 PRECOMPILED_HEADER
1786
1787 This variable indicates the header file for creating a precompiled
1788 header file, to increase the compilation speed of a project.
1789 Precompiled headers are currently only supported on some platforms
1790 (Windows - all MSVC project types, Mac OS X - Xcode, Makefile,
1791 Unix - gcc 3.3 and up).
1792
1793 On other platforms, this variable has different meaning, as noted
1794 below.
1795
1796 This variable contains a list of header files that require some
1797 sort of pre-compilation step (such as with moc). The value of this
1798 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1799 modified.
1800
1801 \target PWD
1802 \section1 PWD
1803
1804 This variable contains the full path leading to the directory where
1805 the \c qmake project file (project.pro) is located.
1806
1807 \target OUT_PWD
1808 \section1 OUT_PWD
1809
1810 This variable contains the full path leading to the directory where
1811 \c qmake places the generated Makefile.
1812
1813 \target QMAKE_systemvariable
1814 \section1 QMAKE
1815
1816 This variable contains the name of the \c qmake program
1817 itself and is placed in generated Makefiles. The value of this
1818 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1819 modified.
1820
1821 \target QMAKESPEC_systemvariable
1822 \section1 QMAKESPEC
1823
1824 This variable contains the name of the \c qmake
1825 configuration to use when generating Makefiles. The value of this
1826 variable is typically handled by \c qmake and rarely needs to be modified.
1827
1828 Use the \c{QMAKESPEC} environment variable to override the \c qmake configuration.
1829 Note that, due to the way \c qmake reads project files, setting the \c{QMAKESPEC}
1830 environment variable from within a project file will have no effect.
1831
1832 \target QMAKE_APP_FLAG
1833 \section1 QMAKE_APP_FLAG
1834
1835 This variable is empty unless the \c app
1836 \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
1837 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1838 modified. Use the following instead:
1839
1840 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 42
1841
1842 \target QMAKE_APP_OR_DLL
1843 \section1 QMAKE_APP_OR_DLL
1844
1845 This variable is empty unless the \c app or \c dll
1846 \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
1847 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1848 modified.
1849
1850 \target QMAKE_AR_CMD
1851 \section1 QMAKE_AR_CMD
1852
1853 \e {This is used on Unix platforms only.}
1854
1855 This variable contains the command for invoking the program which
1856 creates, modifies and extracts archives. The value of this variable is
1857 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1858 and rarely needs to be modified.
1859
1860 \target QMAKE_BUNDLE_DATA
1861 \section1 QMAKE_BUNDLE_DATA
1862
1863 This variable is used to hold the data that will be installed with a library
1864 bundle, and is often used to specify a collection of header files.
1865
1866 For example, the following lines add \c path/to/header_one.h
1867 and \c path/to/header_two.h to a group containing information about the
1868 headers supplied with the framework:
1869
1870 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 43
1871
1872 The last line adds the information about the headers to the collection of
1873 resources that will be installed with the library bundle.
1874
1875 Library bundles are created when the \c lib_bundle option is added to the
1876 \l{#CONFIG}{CONFIG} variable.
1877
1878 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
1879 more information about creating library bundles.
1880
1881 \e{This is used on Mac OS X only.}
1882
1883 \section1 QMAKE_BUNDLE_EXTENSION
1884
1885 This variable defines the extension to be used for library bundles.
1886 This allows frameworks to be created with custom extensions instead of the
1887 standard \c{.framework} directory name extension.
1888
1889 For example, the following definition will result in a framework with the
1890 \c{.myframework} extension:
1891
1892 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 44
1893
1894 \e{This is used on Mac OS X only.}
1895
1896 \section1 QMAKE_CC
1897
1898 This variable specifies the C compiler that will be used when building
1899 projects containing C source code. Only the file name of the compiler
1900 executable needs to be specified as long as it is on a path contained
1901 in the \c PATH variable when the Makefile is processed.
1902
1903 \target QMAKE_CFLAGS_DEBUG
1904 \section1 QMAKE_CFLAGS_DEBUG
1905
1906 This variable contains the flags for the C compiler in debug mode.The value of this variable is
1907 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1908 and rarely needs to be modified.
1909
1910 \target QMAKE_CFLAGS_MT
1911 \section1 QMAKE_CFLAGS_MT
1912
1913 This variable contains the compiler flags for creating a
1914 multi-threaded application or when the version of Qt that you link
1915 against is a multi-threaded statically linked library. The value of
1916 this variable is typically handled by \c qmake or
1917 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1918
1919 \target QMAKE_CFLAGS_MT_DBG
1920 \section1 QMAKE_CFLAGS_MT_DBG
1921
1922 This variable contains the compiler flags for creating a debuggable
1923 multi-threaded application or when the version of Qt that you link
1924 against is a debuggable multi-threaded statically linked library. The
1925 value of this variable is typically handled by \c qmake or
1926 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1927
1928 \target QMAKE_CFLAGS_MT_DLL
1929 \section1 QMAKE_CFLAGS_MT_DLL
1930
1931 \e {This is used on Windows only.}
1932
1933 This variable contains the compiler flags for creating a
1934 multi-threaded dll or when the version of Qt that you link
1935 against is a multi-threaded dll. The value of this variable is typically
1936 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1937 rarely needs to be modified.
1938
1939 \target QMAKE_CFLAGS_MT_DLLDBG
1940 \section1 QMAKE_CFLAGS_MT_DLLDBG
1941
1942 \e {This is used on Windows only.}
1943
1944 This variable contains the compiler flags for creating a debuggable
1945 multi-threaded dll or when the version of Qt that you link
1946 against is a debuggable multi-threaded statically linked library.
1947 The value of this variable is typically handled by \c qmake or
1948 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1949
1950 \target QMAKE_CFLAGS_RELEASE
1951 \section1 QMAKE_CFLAGS_RELEASE
1952
1953 This variable contains the compiler flags for creating a non-debuggable
1954 application. The value of this variable is typically
1955 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1956 rarely needs to be modified.
1957
1958 \target QMAKE_CFLAGS_SHLIB
1959 \section1 QMAKE_CFLAGS_SHLIB
1960
1961 \e {This is used on Unix platforms only.}
1962
1963 This variable contains the compiler flags for creating a shared
1964 library. The value of this variable is typically handled by
1965 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
1966 to be modified.
1967
1968 \target QMAKE_CFLAGS_THREAD
1969 \section1 QMAKE_CFLAGS_THREAD
1970
1971 This variable contains the compiler flags for creating a multi-threaded
1972 application. The value of this variable is typically handled by
1973 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
1974 to be modified.
1975
1976 \target QMAKE_CFLAGS_WARN_OFF
1977 \section1 QMAKE_CFLAGS_WARN_OFF
1978
1979 This variable is not empty if the warn_off
1980 \l{#TEMPLATE}{TEMPLATE} option is specified. The value of this
1981 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1982 and rarely needs to be modified.
1983
1984 \target QMAKE_CFLAGS_WARN_ON
1985 \section1 QMAKE_CFLAGS_WARN_ON
1986
1987 This variable is not empty if the warn_on
1988 \l{#TEMPLATE}{TEMPLATE} option is specified.
1989 The value of this variable is typically handled by
1990 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
1991 to be modified.
1992
1993 \target QMAKE_CLEAN
1994 \section1 QMAKE_CLEAN
1995
1996 This variable contains any files which are not generated files (such as moc and uic
1997 generated files) and object files that should be removed when using "make clean".
1998
1999 \section1 QMAKE_CXX
2000
2001 This variable specifies the C++ compiler that will be used when building
2002 projects containing C++ source code. Only the file name of the compiler
2003 executable needs to be specified as long as it is on a path contained
2004 in the \c PATH variable when the Makefile is processed.
2005
2006 \section1 QMAKE_CXXFLAGS
2007
2008 This variable contains the C++ compiler flags that are used when building
2009 a project. The value of this variable is typically handled by \c qmake or
2010 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. The flags
2011 specific to debug and release modes can be adjusted by modifying
2012 the \c QMAKE_CXXFLAGS_DEBUG and \c QMAKE_CXXFLAGS_RELEASE variables,
2013 respectively.
2014
2015 \bold{Note:} On the Symbian platform, this variable can be used to pass
2016architecture specific options to each compiler in the Symbian build system.
2017For example:
2018
2019 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
2020
2021 For more information, see
2022 \l{qmake Platform Notes#Compiler specific options}{qmake Platform Notes}.
2023
2024 \target QMAKE_CXXFLAGS_DEBUG
2025 \section1 QMAKE_CXXFLAGS_DEBUG
2026
2027 This variable contains the C++ compiler flags for creating a debuggable
2028 application. The value of this variable is typically handled by
2029 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2030 to be modified.
2031
2032 \target QMAKE_CXXFLAGS_MT
2033 \section1 QMAKE_CXXFLAGS_MT
2034
2035 This variable contains the C++ compiler flags for creating a multi-threaded
2036 application. The value of this variable is typically handled by
2037 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2038 to be modified.
2039
2040 \target QMAKE_CXXFLAGS_MT_DBG
2041 \section1 QMAKE_CXXFLAGS_MT_DBG
2042
2043 This variable contains the C++ compiler flags for creating a debuggable multi-threaded
2044 application. The value of this variable is typically handled by
2045 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2046 to be modified.
2047
2048 \target QMAKE_CXXFLAGS_MT_DLL
2049 \section1 QMAKE_CXXFLAGS_MT_DLL
2050
2051 \c {This is used on Windows only.}
2052
2053 This variable contains the C++ compiler flags for creating a multi-threaded
2054 dll. The value of this variable is typically handled by
2055 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2056 to be modified.
2057
2058 \target QMAKE_CXXFLAGS_MT_DLLDBG
2059 \section1 QMAKE_CXXFLAGS_MT_DLLDBG
2060
2061 \c {This is used on Windows only.}
2062
2063 This variable contains the C++ compiler flags for creating a multi-threaded debuggable
2064 dll. The value of this variable is typically handled by
2065 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2066 to be modified.
2067
2068 \target QMAKE_CXXFLAGS_RELEASE
2069 \section1 QMAKE_CXXFLAGS_RELEASE
2070
2071 This variable contains the C++ compiler flags for creating an
2072 application. The value of this variable is typically handled by
2073 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2074 to be modified.
2075
2076 \target QMAKE_CXXFLAGS_SHLIB
2077 \section1 QMAKE_CXXFLAGS_SHLIB
2078
2079 This variable contains the C++ compiler flags for creating a
2080 shared library. The value of this variable is typically handled by
2081 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2082 to be modified.
2083
2084 \target QMAKE_CXXFLAGS_THREAD
2085 \section1 QMAKE_CXXFLAGS_THREAD
2086
2087 This variable contains the C++ compiler flags for creating a
2088 multi-threaded application. The value of this variable is typically handled by
2089 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2090 to be modified.
2091
2092 \target QMAKE_CXXFLAGS_WARN_OFF
2093 \section1 QMAKE_CXXFLAGS_WARN_OFF
2094
2095 This variable contains the C++ compiler flags for suppressing compiler warnings.
2096 The value of this variable is typically handled by \c qmake or
2097 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2098
2099 \target QMAKE_CXXFLAGS_WARN_ON
2100 \section1 QMAKE_CXXFLAGS_WARN_ON
2101
2102 This variable contains C++ compiler flags for generating compiler warnings.
2103 The value of this variable is typically handled by \c qmake or
2104 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2105
2106 \target QMAKE_DISTCLEAN
2107 \section1 QMAKE_DISTCLEAN
2108
2109 This variable removes extra files upon the invocation of \c{make distclean}.
2110
2111 \target QMAKE_EXTENSION_SHLIB
2112 \section1 QMAKE_EXTENSION_SHLIB
2113
2114 This variable contains the extention for shared libraries. The value of this
2115 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2116 and rarely needs to be modified.
2117
2118 Note that platform-specific variables that change the extension will override
2119 the contents of this variable.
2120
2121 \section1 QMAKE_EXT_MOC
2122
2123 This variable changes the extention used on included moc files.
2124
2125 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2126
2127 \section1 QMAKE_EXT_UI
2128
2129 This variable changes the extention used on /e Designer UI files.
2130
2131 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2132
2133 \section1 QMAKE_EXT_PRL
2134
2135 This variable changes the extention used on created PRL files.
2136
2137 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2138 \l{Configuring qmake's Environment#libdepend}{Library Dependencies}.
2139
2140 \section1 QMAKE_EXT_LEX
2141
2142 This variable changes the extention used on files given to lex.
2143
2144 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2145 \l{#LEXSOURCES}{LEXSOURCES}.
2146
2147 \section1 QMAKE_EXT_YACC
2148 This variable changes the extention used on files given to yacc.
2149
2150 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2151 \l{#YACCSOURCES}{YACCSOURCES}.
2152
2153 \section1 QMAKE_EXT_OBJ
2154
2155 This variable changes the extention used on generated object files.
2156
2157 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2158
2159 \section1 QMAKE_EXT_CPP
2160
2161 This variable changes the interpretation of all suffixes in this
2162 list of values as files of type C++ source code.
2163
2164 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2165
2166 \section1 QMAKE_EXT_H
2167
2168 This variable changes the interpretation of all suffixes in this
2169 list of values as files of type C header files.
2170
2171 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2172
2173 \section1 QMAKE_EXTRA_COMPILERS
2174
2175 This variable contains the extra compilers/preprocessors that have been added
2176
2177 See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
2178
2179 \section1 QMAKE_EXTRA_TARGETS
2180
2181 This variable contains the extra targets that have been added
2182
2183 See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
2184
2185 \target QMAKE_FAILED_REQUIREMENTS
2186 \section1 QMAKE_FAILED_REQUIREMENTS
2187
2188 This variable contains the list of requirements that were failed to be met when
2189 \c qmake was used. For example, the sql module is needed and wasn't compiled into Qt. The
2190 value of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2191 and rarely needs to be modified.
2192
2193 \target QMAKE_FILETAGS
2194 \section1 QMAKE_FILETAGS
2195
2196 This variable contains the file tags needed to be entered into the Makefile, such as SOURCES
2197 and HEADERS. The value of this variable is typically handled by \c qmake or
2198 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2199
2200 \section1 QMAKE_FRAMEWORK_BUNDLE_NAME
2201
2202 In a framework project, this variable contains the name to be used for the
2203 framework that is built.
2204
2205 By default, this variable contains the same value as the \l{#TARGET}{TARGET}
2206 variable.
2207
2208 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
2209 more information about creating frameworks and library bundles.
2210
2211 \e{This is used on Mac OS X only.}
2212
2213 \target QMAKE_FRAMEWORK_VERSION
2214 \section1 QMAKE_FRAMEWORK_VERSION
2215
2216 For projects where the build target is a Mac OS X framework, this variable
2217 is used to specify the version number that will be applied to the framework
2218 that is built.
2219
2220 By default, this variable contains the same value as the \l{#VERSION}{VERSION}
2221 variable.
2222
2223 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
2224 more information about creating frameworks.
2225
2226 \e{This is used on Mac OS X only.}
2227
2228 \target QMAKE_INCDIR
2229 \section1 QMAKE_INCDIR
2230
2231 This variable contains the location of all known header files to be added to
2232 INCLUDEPATH when building an application. The value of this variable is
2233 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
2234 needs to be modified.
2235
2236 \target QMAKE_INCDIR_EGL
2237 \section1 QMAKE_INCDIR_EGL
2238
2239 This variable contains the location of EGL header files to be added
2240 to INCLUDEPATH when building an application with OpenGL/ES or
2241 OpenVG support. The value of this variable is typically handled by
2242 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2243
2244 \target QMAKE_INCDIR_OPENGL
2245 \section1 QMAKE_INCDIR_OPENGL
2246
2247 This variable contains the location of OpenGL header files to be added
2248 to INCLUDEPATH when building an application with OpenGL support. The
2249 value of this variable is typically handled by \c qmake or
2250 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2251
2252 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2253 then QMAKE_INCDIR_EGL may also need to be set.
2254
2255 \section1 QMAKE_INCDIR_OPENGL_ES1, QMAKE_INCDIR_OPENGL_ES1CL, QMAKE_INCDIR_OPENGL_ES2
2256
2257 These variables contain the location of OpenGL headers files to be added
2258 to INCLUDEPATH when building an application with OpenGL ES 1, OpenGL ES 1 Common
2259 Lite or OpenGL ES 2 support respectively.
2260
2261 The value of this variable is typically handled by \c qmake or
2262 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2263
2264 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2265 then QMAKE_INCDIR_EGL may also need to be set.
2266
2267 \target QMAKE_INCDIR_OPENVG
2268 \section1 QMAKE_INCDIR_OPENVG
2269
2270 This variable contains the location of OpenVG header files to be added
2271 to INCLUDEPATH when building an application with OpenVG support. The
2272 value of this variable is typically handled by \c qmake or
2273 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2274
2275 If the OpenVG implementation uses EGL then QMAKE_INCDIR_EGL may also
2276 need to be set.
2277
2278 \target QMAKE_INCDIR_QT
2279 \section1 QMAKE_INCDIR_QT
2280
2281 This variable contains the location of all known header file
2282 paths to be added to INCLUDEPATH when building a Qt application. The value
2283 of this variable is typically handled by \c qmake or
2284 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2285
2286 \target QMAKE_INCDIR_THREAD
2287 \section1 QMAKE_INCDIR_THREAD
2288
2289 This variable contains the location of all known header file
2290 paths to be added to INCLUDEPATH when building a multi-threaded application.
2291 The value of this variable is typically handled by \c qmake or
2292 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2293
2294 \target QMAKE_INCDIR_X11
2295 \section1 QMAKE_INCDIR_X11
2296
2297 \e {This is used on Unix platforms only.}
2298
2299 This variable contains the location of X11 header file paths to be
2300 added to INCLUDEPATH when building a X11 application. The
2301 value of this variable is typically handled by \c qmake or
2302 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2303
2304 \target QMAKE_INFO_PLIST
2305 \section1 QMAKE_INFO_PLIST
2306
2307 \e {This is used on Mac OS X platforms only.}
2308
2309 This variable contains the name of the property list file, \c{.plist}, you
2310 would like to include in your Mac OS X application bundle.
2311
2312 In the \c{.plist} file, you can define some variables, e.g., @EXECUTABLE@,
2313 which qmake will replace with the actual executable name. Other variables
2314 include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@.
2315
2316 \note Most of the time, the default \c{Info.plist} is good enough.
2317
2318 \section1 QMAKE_LFLAGS
2319
2320 This variable contains a general set of flags that are passed to
2321 the linker. If you need to change the flags used for a particular
2322 platform or type of project, use one of the specialized variables
2323 for that purpose instead of this variable.
2324
2325 \target QMAKE_LFLAGS_CONSOLE
2326 \section1 QMAKE_LFLAGS_CONSOLE
2327
2328 \e {This is used on Windows only.}
2329
2330 This variable contains link flags when building console
2331 programs. The value of this variable is typically handled by
2332 \c qmake or
2333 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2334
2335 \section1 QMAKE_LFLAGS_CONSOLE_DLL
2336
2337 \e {This is used on Windows only.}
2338
2339 This variable contains link flags when building console
2340 dlls. The value of this variable is typically handled by
2341 \c qmake or
2342 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2343
2344 \section1 QMAKE_LFLAGS_DEBUG
2345
2346 This variable contains link flags when building debuggable applications. The
2347 value of this variable is typically handled by \c qmake or
2348 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2349
2350 \section1 QMAKE_LFLAGS_PLUGIN
2351
2352 This variable contains link flags when building plugins. The value
2353 of this variable is typically handled by \c qmake or
2354 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2355
2356 \section1 QMAKE_LFLAGS_RPATH
2357
2358 \e {This is used on Unix platforms only.}
2359
2360 Library paths in this definition are added to the executable at link
2361 time so that the added paths will be preferentially searched at runtime.
2362
2363 \section1 QMAKE_LFLAGS_QT_DLL
2364
2365 This variable contains link flags when building programs that
2366 use the Qt library built as a dll. The value of this variable is
2367 typically handled by \c qmake or
2368 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2369
2370 \section1 QMAKE_LFLAGS_RELEASE
2371
2372 This variable contains link flags when building applications for
2373 release. The value of this variable is typically handled by
2374 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2375
2376 \section1 QMAKE_LFLAGS_SHAPP
2377
2378 This variable contains link flags when building applications which are using
2379 the \c app template. The value of this variable is typically handled by
2380 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2381
2382 \section1 QMAKE_LFLAGS_SHLIB
2383
2384 This variable contains link flags when building shared libraries
2385 The value of this variable is typically handled by \c qmake or
2386 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2387
2388 \section1 QMAKE_LFLAGS_SONAME
2389
2390 This variable specifies the link flags to set the name of shared objects,
2391 such as .so or .dll. The value of this variable is typically handled by \c
2392 qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2393
2394 \section1 QMAKE_LFLAGS_THREAD
2395
2396 This variable contains link flags when building multi-threaded projects.
2397 The value of this variable is typically handled by \c qmake or
2398 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2399
2400 \section1 QMAKE_LFLAGS_WINDOWS
2401
2402 \e {This is used on Windows only.}
2403
2404 This variable contains link flags when building Windows GUI projects
2405 (i.e. non-console applications).
2406 The value of this variable is typically handled by \c qmake or
2407 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2408
2409 \section1 QMAKE_LFLAGS_WINDOWS_DLL
2410
2411 \e {This is used on Windows only.}
2412
2413 This variable contains link flags when building Windows DLL projects.
2414 The value of this variable is typically handled by \c qmake or
2415 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2416
2417 \section1 QMAKE_LIBDIR
2418
2419 This variable contains the location of all known library
2420 directories.The value of this variable is typically handled by
2421 \c qmake or
2422 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2423
2424 \section1 QMAKE_LIBDIR_FLAGS
2425
2426 \e {This is used on Unix platforms only.}
2427
2428 This variable contains the location of all library
2429 directory with -L prefixed. The value of this variable is typically handled by
2430 \c qmake or
2431 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2432
2433 \section1 QMAKE_LIBDIR_EGL
2434
2435 This variable contains the location of the EGL library
2436 directory, when EGL is used with OpenGL/ES or OpenVG. The value
2437 of this variable is typically handled by \c qmake or
2438 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2439
2440 \section1 QMAKE_LIBDIR_OPENGL
2441
2442 This variable contains the location of the OpenGL library
2443 directory.The value of this variable is typically handled by
2444 \c qmake or
2445 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2446
2447 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2448 then QMAKE_LIBDIR_EGL may also need to be set.
2449
2450 \section1 QMAKE_LIBDIR_OPENVG
2451
2452 This variable contains the location of the OpenVG library
2453 directory. The value of this variable is typically handled by
2454 \c qmake or
2455 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2456
2457 If the OpenVG implementation uses EGL, then QMAKE_LIBDIR_EGL
2458 may also need to be set.
2459
2460 \section1 QMAKE_LIBDIR_QT
2461
2462 This variable contains the location of the Qt library
2463 directory.The value of this variable is typically handled by
2464 \c qmake or
2465 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2466
2467 \section1 QMAKE_LIBDIR_X11
2468
2469 \e {This is used on Unix platforms only.}
2470
2471 This variable contains the location of the X11 library
2472 directory.The value of this variable is typically handled by
2473 \c qmake or
2474 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2475
2476 \section1 QMAKE_LIBS
2477
2478 This variable contains all project libraries. The value of this
2479 variable is typically handled by \c qmake or
2480 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2481
2482 \section1 QMAKE_LIBS_CONSOLE
2483
2484 \e {This Windows-specific variable is no longer used.}
2485
2486 Prior to Qt 4.2, this variable was used to list the libraries
2487 that should be linked against when building a console application
2488 project on Windows. \l{#QMAKE_LIBS_WINDOW}{QMAKE_LIBS_WINDOW}
2489 should now be used instead.
2490
2491 \section1 QMAKE_LIBS_EGL
2492
2493 This variable contains all EGL libraries when building Qt with
2494 OpenGL/ES or OpenVG. The value of this variable is typically
2495 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
2496 needs to be modified. The usual value is \c{-lEGL}.
2497
2498 \section1 QMAKE_LIBS_OPENGL
2499
2500 This variable contains all OpenGL libraries. The value of this
2501 variable is typically handled by \c qmake or
2502 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2503
2504 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2505 then QMAKE_LIBS_EGL may also need to be set.
2506
2507 \section1 QMAKE_LIBS_OPENGL_QT
2508
2509 This variable contains all OpenGL Qt libraries.The value of this
2510 variable is typically handled by \c qmake or
2511 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2512
2513 \section1 QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL, QMAKE_LIBS_OPENGL_ES2
2514
2515 These variables contain all the OpenGL libraries for OpenGL ES 1,
2516 OpenGL ES 1 Common Lite profile and OpenGL ES 2.
2517
2518 The value of these variables is typically handled by \c qmake or
2519 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2520
2521 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2522 then QMAKE_LIBS_EGL may also need to be set.
2523
2524 \section1 QMAKE_LIBS_OPENVG
2525
2526 This variable contains all OpenVG libraries. The value of this
2527 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2528 and rarely needs to be modified. The usual value is \c{-lOpenVG}.
2529
2530 Some OpenVG engines are implemented on top of OpenGL. This will
2531 be detected at configure time and QMAKE_LIBS_OPENGL will be implicitly
2532 added to QMAKE_LIBS_OPENVG wherever the OpenVG libraries are linked.
2533
2534 If the OpenVG implementation uses EGL, then QMAKE_LIBS_EGL may also
2535 need to be set.
2536
2537 \section1 QMAKE_LIBS_QT
2538
2539 This variable contains all Qt libraries.The value of this
2540 variable is typically handled by \c qmake or
2541 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2542
2543 \section1 QMAKE_LIBS_QT_DLL
2544
2545 \e {This is used on Windows only.}
2546
2547 This variable contains all Qt libraries when Qt is built as a dll. The
2548 value of this variable is typically handled by \c qmake or
2549 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2550
2551 \section1 QMAKE_LIBS_QT_OPENGL
2552
2553 This variable contains all the libraries needed to link against if
2554 OpenGL support is turned on. The
2555 value of this variable is typically handled by \c qmake or
2556 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2557
2558 \section1 QMAKE_LIBS_QT_THREAD
2559
2560 This variable contains all the libraries needed to link against if
2561 thread support is turned on. The
2562 value of this variable is typically handled by \c qmake or
2563 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2564
2565 \section1 QMAKE_LIBS_RT
2566
2567 \e {This is used with Borland compilers only.}
2568
2569 This variable contains the runtime library needed to link against when
2570 building an application. The
2571 value of this variable is typically handled by \c qmake or
2572 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2573
2574 \section1 QMAKE_LIBS_RTMT
2575
2576 \e {This is used with Borland compilers only.}
2577
2578 This variable contains the runtime library needed to link against when
2579 building a multi-threaded application. The
2580 value of this variable is typically handled by \c qmake or
2581 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2582
2583 \section1 QMAKE_LIBS_THREAD
2584
2585 \e {This is used on Unix platforms only.}
2586
2587 This variable contains all libraries that need to be linked against
2588 when building a multi-threaded application. The
2589 value of this variable is typically handled by \c qmake or
2590 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2591
2592 \section1 QMAKE_LIBS_WINDOWS
2593
2594 \e {This is used on Windows only.}
2595
2596 This variable contains all windows libraries.The value of this
2597 variable is typically handled by \c qmake or
2598 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2599
2600 \section1 QMAKE_LIBS_X11
2601
2602 \e {This is used on Unix platforms only.}
2603
2604 This variable contains all X11 libraries.The value of this
2605 variable is typically handled by \c qmake or
2606 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2607
2608 \section1 QMAKE_LIBS_X11SM
2609
2610 \e {This is used on Unix platforms only.}
2611
2612 This variable contains all X11 session management libraries. The
2613 value of this variable is typically handled by \c qmake or
2614 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2615
2616 \section1 QMAKE_LIB_FLAG
2617
2618 This variable is not empty if the \c lib template is specified. The
2619 value of this variable is typically handled by \c qmake or
2620 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2621
2622 \section1 QMAKE_LINK_SHLIB_CMD
2623
2624 This variable contains the command to execute when creating a
2625 shared library. The
2626 value of this variable is typically handled by \c qmake or
2627 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2628
2629 \section1 QMAKE_POST_LINK
2630
2631 This variable contains the command to execute after linking the TARGET
2632 together. This variable is normally empty and therefore nothing is
2633 executed, additionally some backends will not support this - mostly only
2634 Makefile backends.
2635
2636 \section1 QMAKE_PRE_LINK
2637
2638 This variable contains the command to execute before linking the TARGET
2639 together. This variable is normally empty and therefore nothing is
2640 executed, additionally some backends will not support this - mostly only
2641 Makefile backends.
2642
2643 \section1 QMAKE_LN_SHLIB
2644
2645 This variable contains the command to execute when creating a link
2646 to a shared library. The
2647 value of this variable is typically handled by \c qmake or
2648 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2649
2650 \section1 QMAKE_MAC_SDK
2651
2652 This variable is used on Mac OS X when building universal binaries.
2653 This process is described in more detail in the
2654 \l{Deploying an Application on Mac OS X#Architecture Dependencies}{Deploying
2655 an Application on Mac OS X} document.
2656
2657 \section1 QMAKE_MACOSX_DEPLOYMENT_TARGET
2658 This variable only has an effect when building on Mac OS X. On that
2659 platform, the variable will be forwarded to the MACOSX_DEPLOYMENT_TARGET
2660 environment variable, which is interpreted by the compiler or linker.
2661 For more information, see the
2662 \l{Deploying an Application on Mac OS X#Mac OS X Version Dependencies}{Deploying
2663 an Application on Mac OS X} document.
2664
2665 \section1 QMAKE_MAKEFILE
2666
2667 This variable contains the name of the Makefile to create. The
2668 value of this variable is typically handled by \c qmake or
2669 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2670
2671 \section1 QMAKE_MOC_SRC
2672
2673 This variable contains the names of all moc source files to
2674 generate and include in the project. The value of this variable is
2675 typically handled by \c qmake or
2676 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2677
2678 \section1 QMAKE_QMAKE
2679
2680 This variable contains the location of qmake if it is not in the path.
2681 The value of this variable is typically handled by \c qmake or
2682 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2683
2684 \section1 QMAKE_QT_DLL
2685
2686 This variable is not empty if Qt was built as a dll. The
2687 value of this variable is typically handled by \c qmake or
2688 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2689
2690 \section1 QMAKE_RESOURCE_FLAGS
2691
2692 This variable is used to customize the list of options passed to the
2693 \l{rcc}{Resource Compiler} in each of the build rules where it is used.
2694 For example, the following line ensures that the \c{-threshold} and
2695 \c{-compress} options are used with particular values each time that
2696 \c rcc is invoked:
2697
2698 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 45
2699
2700 \section1 QMAKE_RPATH
2701
2702 \e {This is used on Unix platforms only.}
2703
2704 Is equivalent to \l QMAKE_LFLAGS_RPATH.
2705
2706 \section1 QMAKE_RPATHDIR
2707
2708 \e {This is used on Unix platforms only.}
2709
2710 A list of library directory paths, these paths are added to the
2711 executable at link time so that the paths will be preferentially
2712 searched at runtime.
2713
2714 \section1 QMAKE_RUN_CC
2715
2716 This variable specifies the individual rule needed to build an object.
2717 The value of this variable is typically handled by \c qmake or
2718 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2719
2720 \section1 QMAKE_RUN_CC_IMP
2721
2722 This variable specifies the individual rule needed to build an object.
2723 The value of this variable is typically handled by \c qmake or
2724 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2725
2726 \section1 QMAKE_RUN_CXX
2727
2728 This variable specifies the individual rule needed to build an object.
2729 The value of this variable is typically handled by \c qmake or
2730 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2731
2732 \section1 QMAKE_RUN_CXX_IMP
2733
2734 This variable specifies the individual rule needed to build an object.
2735 The value of this variable is typically handled by \c qmake or
2736 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2737
2738 \section1 QMAKE_TARGET
2739
2740 This variable contains the name of the project target. The value of
2741 this variable is typically handled by \c qmake or
2742 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2743
2744 \section1 QMAKE_UIC
2745
2746 This variable contains the location of uic if it is not in the path.
2747 The value of this variable is typically handled by \c qmake or
2748 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2749
2750 It can be used to specify arguments to uic as well, such as additional plugin
2751 paths. For example:
2752
2753 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 46
2754
2755 \section1 QT
2756
2757 The values stored in the \c QT variable control which of the Qt modules are
2758 used by your project.
2759
2760 The table below shows the options that can be used with the \c QT variable
2761 and the features that are associated with each of them:
2762
2763 \table
2764 \header \o Option \o Features
2765 \row \o core (included by default) \o QtCore module
2766 \row \o gui (included by default) \o QtGui module
2767 \row \o network \o QtNetwork module
2768 \row \o opengl \o QtOpenGL module
2769 \row \o phonon \o Phonon Multimedia Framework
2770 \row \o sql \o QtSql module
2771 \row \o svg \o QtSvg module
2772 \row \o xml \o QtXml module
2773 \row \o webkit \o WebKit integration
2774 \row \o qt3support \o Qt3Support module
2775 \endtable
2776
2777 By default, \c QT contains both \c core and \c gui, ensuring that standard
2778 GUI applications can be built without further configuration.
2779
2780 If you want to build a project \e without the QtGui module, you need to
2781 exclude the \c gui value with the "-=" operator; the following line will
2782 result in a minimal Qt project being built:
2783
2784 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 47
2785
2786 Note that adding the \c opengl option to the \c QT variable automatically
2787 causes the equivalent option to be added to the \c CONFIG variable.
2788 Therefore, for Qt applications, it is not necessary to add the \c opengl
2789 option to both \c CONFIG and \c{QT}.
2790
2791 \section1 QTPLUGIN
2792
2793 This variable contains a list of names of static plugins that are to be
2794 compiled with an application so that they are available as built-in
2795 resources.
2796
2797 \target QT_VERSION
2798 \section1 QT_VERSION
2799
2800 This variable contains the current version of Qt.
2801
2802 \target QT_MAJOR_VERSION
2803 \section1 QT_MAJOR_VERSION
2804
2805 This variable contains the current major version of Qt.
2806
2807 \target QT_MINOR_VERSION
2808 \section1 QT_MINOR_VERSION
2809
2810 This variable contains the current minor version of Qt.
2811
2812 \target QT_PATCH_VERSION
2813 \section1 QT_PATCH_VERSION
2814
2815 This variable contains the current patch version of Qt.
2816
2817 \section1 RC_FILE
2818
2819 This variable contains the name of the resource file for the application.
2820 The value of this variable is typically handled by \c qmake or
2821 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2822
2823 \target RCC_DIR
2824 \section1 RCC_DIR
2825
2826 This variable specifies the directory where all intermediate
2827 resource files should be placed.
2828
2829 For example:
2830
2831 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 48
2832
2833 \target REQUIRES
2834 \section1 REQUIRES
2835
2836 This is a special variable processed by \c qmake. If the
2837 contents of this variable do not appear in CONFIG by the time this
2838 variable is assigned, then a minimal Makefile will be generated that
2839 states what dependencies (the values assigned to REQUIRES) are
2840 missing.
2841
2842 This is mainly used in Qt's build system for building the examples.
2843
2844 \section1 RESOURCES
2845
2846 This variable contains the name of the resource collection file (qrc)
2847 for the application. Further information about the resource collection
2848 file can be found at \l{The Qt Resource System}.
2849
2850 \section1 RES_FILE
2851
2852 This variable contains the name of the resource file for the application.
2853 The value of this variable is typically handled by \c qmake or
2854 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2855
2856 \target RSS_RULES
2857 \section1 RSS_RULES
2858
2859 \e {This is only used on the Symbian platform.}
2860
2861 Generic RSS file content can be specified with this variable. The syntax is
2862 similar to \c MMP_RULES and \c BLD_INF_RULES.
2863
2864 For example:
2865
2866 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 144
2867
2868 This will add the specified statement to the end of the generated
2869 registration resource file. As an impact of this statement, the application
2870 will not be visible in application shell.
2871
2872 It is also possible to add multiple rows in a single block. Each double
2873 quoted string will be placed on a new row in the registration resource file.
2874
2875 For example:
2876
2877 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 145
2878
2879 This example will install the application to MyFolder in the Symbian
2880 platform application shell. In addition it will make the application to
2881 be launched in background.
2882
2883 For detailed list of possible RSS statements, please refer to the
2884 Symbian platform help.
2885
2886 \note You should not use \c RSS_RULES variable to set the following RSS statements:
2887
2888 app_file
2889 localisable_resource_file
2890 localisable_resource_id
2891
2892 These statements are internally handled by qmake.
2893
2894 \target S60_VERSION
2895 \section1 S60_VERSION
2896
2897 \e {This is only used on the Symbian platform.}
2898
2899 Contains the version number of the underlying S60 SDK; e.g. "5.0".
2900
2901 \target SIGNATURE_FILE
2902 \section1 SIGNATURE_FILE
2903
2904 \e {This is only used on Windows CE.}
2905
2906 Specifies which signature file should be used to sign the project target.
2907
2908 \note This variable will overwrite the setting you have specified in configure,
2909 with the \c -signature option.
2910
2911 \target SOURCES
2912 \section1 SOURCES
2913
2914 This variable contains the name of all source files in the project.
2915
2916 For example:
2917
2918 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 49
2919
2920 See also \l{#HEADERS}{HEADERS}
2921
2922 \section1 SRCMOC
2923
2924 This variable is set by \c qmake if files can be found that
2925 contain the Q_OBJECT macro. \c SRCMOC contains the
2926 name of all the generated moc files. The value of this variable
2927 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
2928 modified.
2929
2930 \target SUBDIRS
2931 \section1 SUBDIRS
2932
2933 This variable, when used with the \l{#TEMPLATE}{\c subdirs template}
2934 contains the names of all subdirectories that contain parts of the project
2935 that need be built. Each subdirectory must contain its own project file.
2936
2937 For example:
2938
2939 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 50
2940
2941 It is essential that the project file in each subdirectory has the same
2942 name as the subdirectory itself, so that \c qmake can find it.
2943 For example, if the subdirectory is called \c myapp then the project file
2944 in that directory should be called \c myapp.pro.
2945
2946 If you need to ensure that the subdirectories are built in the order in
2947 which they are specified, update the \l{#CONFIG}{CONFIG} variable to
2948 include the \c ordered option:
2949
2950 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 51
2951
2952 \target TARGET
2953 \section1 TARGET
2954
2955 This specifies the name of the target file.
2956
2957 For example:
2958
2959 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 52
2960
2961 The project file above would produce an executable named \c myapp on
2962 unix and 'myapp.exe' on windows.
2963
2964 \target TARGET.CAPABILITY
2965 \section1 TARGET.CAPABILITY
2966
2967 \e {This is only used on the Symbian platform.}
2968
2969 Specifies which platform capabilities the application should have. For more
2970 information, please refer to the Symbian SDK documentation.
2971
2972 \target TARGET.EPOCALLOWDLLDATA
2973 \section1 TARGET.EPOCALLOWDLLDATA
2974
2975 \e {This is only used on the Symbian platform.}
2976
2977 Specifies whether static data should be allowed in the application. Symbian
2978 disallows this by default in order to save memory. To use it, set this to 1.
2979
2980 \target TARGET.EPOCHEAPSIZE
2981 \section1 TARGET.EPOCHEAPSIZE
2982
2983 \e {This is only used on the Symbian platform.}
2984
2985 Specifies the minimum and maximum heap size of the application. The program
2986 will refuse to run if the minimum size is not available when it starts. For
2987 example:
2988
2989 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 135
2990
2991 \target TARGET.EPOCSTACKSIZE
2992 \section1 TARGET.EPOCSTACKSIZE
2993
2994 \e {This is only used on the Symbian platform.}
2995
2996 Specifies the maximum stack size of the application. For example:
2997
2998 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 136
2999
3000 \target TARGET.SID
3001 \section1 TARGET.SID
3002
3003 \e {This is only used on the Symbian platform.}
3004
3005 Specifies which secure identifier to use for the target application or
3006 library. For more information, see the Symbian SDK documentation.
3007
3008 \target TARGET.UID2
3009 \section1 TARGET.UID2
3010
3011 \e {This is only used on the Symbian platform.}
3012
3013 Specifies which unique identifier 2 to use for the target application or
3014 library. If this variable is not specified, it defaults to the same value
3015 as TARGET.UID3. For more information, see the Symbian SDK documentation.
3016
3017 \target TARGET.UID3
3018 \section1 TARGET.UID3
3019
3020 \e {This is only used on the Symbian platform.}
3021
3022 Specifies which unique identifier 3 to use for the target application or
3023 library. If this variable is not specified, a UID3 suitable for development
3024 and debugging will be generated automatically. However, applications being
3025 released should always define this variable. For more information, see the
3026 Symbian SDK documentation.
3027
3028 \target TARGET.VID
3029 \section1 TARGET.VID
3030
3031 \e {This is only used on the Symbian platform.}
3032
3033 Specifies which vendor identifier to use for the target application or
3034 library. For more information, see the Symbian SDK documentation.
3035
3036 \section1 TARGET_EXT
3037
3038 This variable specifies the target's extension. The value of this variable
3039 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3040 modified.
3041
3042 \section1 TARGET_x
3043
3044 This variable specifies the target's extension with a major version number. The value of this variable
3045 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3046 modified.
3047
3048 \section1 TARGET_x.y.z
3049
3050 This variable specifies the target's extension with version number. The value of this variable
3051 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3052 modified.
3053
3054 \target TEMPLATE
3055 \section1 TEMPLATE
3056
3057 This variable contains the name of the template to use when
3058 generating the project. The allowed values are:
3059
3060 \table
3061 \header \o Option \o Description
3062 \row \o app \o Creates a Makefile for building applications (the default). (See
3063 \l{qmake Common Projects#Application}{qmake Common Projects} for more information.)
3064 \row \o lib \o Creates a Makefile for building libraries. (See
3065 \l{qmake Common Projects#Library}{qmake Common Projects} for more information.)
3066 \row \o subdirs \o Creates a Makefile for building targets in subdirectories.
3067 The subdirectories are specified using the \l{#SUBDIRS}{SUBDIRS}
3068 variable.
3069 \row \o vcapp \o \e {Windows only} Creates an application project for Visual Studio.
3070 (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
3071 for more information.)
3072 \row \o vclib \o \e {Windows only} Creates a library project for Visual Studio.
3073 (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
3074 for more information.)
3075 \endtable
3076
3077 For example:
3078
3079 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 53
3080
3081 The template can be overridden by specifying a new template type with the
3082 \c -t command line option. This overrides the template type \e after the .pro
3083 file has been processed. With .pro files that use the template type to
3084 determine how the project is built, it is necessary to declare TEMPLATE on
3085 the command line rather than use the \c -t option.
3086
3087 \section1 TRANSLATIONS
3088
3089 This variable contains a list of translation (.ts) files that contain
3090 translations of the user interface text into non-native languages.
3091
3092 See the \l{Qt Linguist Manual} for more information about
3093 internationalization (i18n) and localization (l10n) with Qt.
3094
3095 \section1 UICIMPLS
3096
3097 This variable contains a list of the generated implementation files by UIC.
3098 The value of this variable
3099 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3100 modified.
3101
3102 \section1 UICOBJECTS
3103
3104 This variable is generated from the UICIMPLS variable. The extension of each
3105 file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is
3106 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
3107 rarely needs to be modified.
3108
3109 \target UI_DIR
3110 \section1 UI_DIR
3111
3112 This variable specifies the directory where all intermediate files from uic
3113 should be placed. This variable overrides both UI_SOURCES_DIR and
3114 UI_HEADERS_DIR.
3115
3116 For example:
3117
3118 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 54
3119
3120 \target UI_HEADERS_DIR
3121 \section1 UI_HEADERS_DIR
3122
3123 This variable specifies the directory where all declaration files (as
3124 generated by uic) should be placed.
3125
3126 For example:
3127
3128 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 55
3129
3130 \target UI_SOURCES_DIR
3131 \section1 UI_SOURCES_DIR
3132
3133 This variable specifies the directory where all implementation files (as generated
3134 by uic) should be placed.
3135
3136 For example:
3137
3138 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 56
3139
3140 \target VERSION
3141 \section1 VERSION
3142
3143 This variable contains the version number of the application or library if
3144 either the \c app \l{#TEMPLATE}{TEMPLATE} or the \c lib \l{#TEMPLATE}{TEMPLATE}
3145 is specified.
3146
3147 For example:
3148
3149 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 57
3150
3151 \section1 VER_MAJ
3152
3153 This variable contains the major version number of the library, if the
3154 \c lib \l{#TEMPLATE}{template} is specified.
3155
3156 \section1 VER_MIN
3157
3158 This variable contains the minor version number of the library, if the
3159 \c lib \l{#TEMPLATE}{template} is specified.
3160
3161 \section1 VER_PAT
3162
3163 This variable contains the patch version number of the library, if the
3164 \c lib \l{#TEMPLATE}{template} is specified.
3165
3166 \section1 VPATH
3167
3168 This variable tells \c qmake where to search for files it cannot
3169 open. With this you may tell \c qmake where it may look for things
3170 like SOURCES, and if it finds an entry in SOURCES that cannot be
3171 opened it will look through the entire VPATH list to see if it can
3172 find the file on its own.
3173
3174 See also \l{#DEPENDPATH}{DEPENDPATH}.
3175
3176 \section1 YACCIMPLS
3177
3178 This variable contains a list of yacc source files. The value of
3179 this variable is typically handled by \c qmake or
3180 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
3181
3182 \section1 YACCOBJECTS
3183
3184 This variable contains a list of yacc object files. The value of
3185 this variable is typically handled by \c qmake or
3186 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
3187
3188 \target YACCSOURCES
3189 \section1 YACCSOURCES
3190
3191 This variable contains a list of yacc source files to be included
3192 in the project. All dependencies, headers and source files will
3193 automatically be included in the project.
3194
3195 For example:
3196
3197 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 58
3198
3199 \section1 _PRO_FILE_
3200
3201 This variable contains the path to the project file in use.
3202
3203 For example, the following line causes the location of the project
3204 file to be written to the console:
3205
3206 \snippet doc/src/snippets/qmake/project_location.pro project file
3207
3208 \section1 _PRO_FILE_PWD_
3209
3210 This variable contains the path to the directory containing the project
3211 file in use.
3212
3213 For example, the following line causes the location of the directory
3214 containing the project file to be written to the console:
3215
3216 \snippet doc/src/snippets/qmake/project_location.pro project file directory
3217*/
3218
3219/*!
3220 \page qmake-function-reference.html
3221 \title qmake Function Reference
3222 \contentspage {qmake Manual}{Contents}
3223 \previouspage qmake Variable Reference
3224 \nextpage Configuring qmake's Environment
3225
3226 \c qmake provides built-in functions to allow the contents of
3227 variables to be processed, and to enable tests to be performed
3228 during the configuration process. Functions that process the
3229 contents of variables typically return values that can be assigned
3230 to other variables, and these values are obtained by prefixing
3231 function with the \c $$ operator. Functions that perform tests
3232 are usually used as the conditional parts of scopes; these are
3233 indicated in the function descriptions below.
3234
3235 \tableofcontents{2}
3236
3237 \section1 basename(variablename)
3238
3239 Returns the basename of the file specified. For example:
3240
3241 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 59
3242
3243 \section1 CONFIG(config)
3244 [Conditional]
3245
3246 This function can be used to test for variables placed into the
3247 \c CONFIG variable. This is the same as regular old style (tmake) scopes,
3248 but has the added advantage a second parameter can be passed to test for
3249 the active config. As the order of values is important in \c CONFIG
3250 variables (i.e. the last one set will be considered the active config for
3251 mutually exclusive values) a second parameter can be used to specify a set
3252 of values to consider. For example:
3253
3254 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 60
3255
3256 Because release is considered the active setting (for feature parsing)
3257 it will be the CONFIG used to generate the build file. In the common
3258 case a second parameter is not needed, but for specific mutual
3259 exclusive tests it is invaluable.
3260
3261 \section1 contains(variablename, value)
3262 [Conditional]
3263
3264 Succeeds if the variable \e variablename contains the value \e value;
3265 otherwise fails. You can check the return value of this function using
3266 a scope.
3267
3268 For example:
3269
3270 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 61
3271
3272 The contents of the scope are only processed if the \c drivers
3273 variable contains the value, \c network. If this is the case, the
3274 appropriate files are added to the \c SOURCES and \c HEADERS
3275 variables.
3276
3277 \section1 count(variablename, number)
3278 [Conditional]
3279
3280 Succeeds if the variable \e variablename contains a list with the
3281 specified \e number of value; otherwise fails.
3282
3283 This function is used to ensure that declarations inside a scope are
3284 only processed if the variable contains the correct number of values;
3285 for example:
3286
3287 \snippet doc/src/snippets/qmake/functions.pro 2
3288
3289 \section1 dirname(file)
3290
3291 Returns the directory name part of the specified file. For example:
3292
3293 \snippet doc/src/snippets/qmake/dirname.pro 0
3294
3295 \section1 error(string)
3296
3297 This function never returns a value. \c qmake displays the given
3298 \e string to the user, and exits. This function should only be used
3299 for unrecoverable errors.
3300
3301 For example:
3302
3303 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 62
3304
3305 \section1 eval(string)
3306 [Conditional]
3307
3308 Evaluates the contents of the string using \c qmake's syntax rules
3309 and returns true.
3310 Definitions and assignments can be used in the string to modify the
3311 values of existing variables or create new definitions.
3312
3313 For example:
3314 \snippet doc/src/snippets/qmake/functions.pro 4
3315
3316 Note that quotation marks can be used to delimit the string, and that
3317 the return value can be discarded if it is not needed.
3318
3319 \section1 exists(filename)
3320 [Conditional]
3321
3322 Tests whether a file with the given \e filename exists.
3323 If the file exists, the function succeeds; otherwise it fails.
3324 If a regular expression is specified for the filename, this function
3325 succeeds if any file matches the regular expression specified.
3326
3327 For example:
3328 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 63
3329
3330 Note that "/" can be used as a directory separator, regardless of the
3331 platform in use.
3332
3333 \section1 find(variablename, substr)
3334
3335 Places all the values in \e variablename that match \e substr. \e
3336 substr may be a regular expression, and will be matched accordingly.
3337
3338 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 64
3339
3340 MY_VAR2 will contain '-Lone -Ltwo -Lthree -Lfour -Lfive', and MY_VAR3 will
3341 contains 'three two three'.
3342
3343 \section1 for(iterate, list)
3344
3345 This special test function will cause a loop to be started that
3346 iterates over all values in \e list, setting \e iterate to each
3347 value in turn. As a convenience, if \e list is 1..10 then iterate will
3348 iterate over the values 1 through 10.
3349
3350 The use of an else scope afer a condition line with a for() loop is
3351 disallowed.
3352
3353 For example:
3354
3355 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 65
3356
3357 \section1 include(filename)
3358 [Conditional]
3359
3360 Includes the contents of the file specified by \e filename into the
3361 current project at the point where it is included. This function
3362 succeeds if \e filename is included; otherwise it fails. The included
3363 file is processed immediately.
3364
3365 You can check whether the file was included by using this function as
3366 the condition for a scope; for example:
3367
3368 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 66
3369
3370 \section1 infile(filename, var, val)
3371 [Conditional]
3372
3373 Succeeds if the file \e filename (when parsed by \c qmake itself)
3374 contains the variable \e var with a value of \e val; otherwise fails.
3375 If you do not specify a third argument (\e val), the function will
3376 only test whether \e var has been declared in the file.
3377
3378 \section1 isEmpty(variablename)
3379 [Conditional]
3380
3381 Succeeds if the variable \e variablename is empty; otherwise fails.
3382 This is the equivalent of \c{count( variablename, 0 )}.
3383
3384 For example:
3385
3386 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 67
3387
3388 \section1 join(variablename, glue, before, after)
3389
3390 Joins the value of \e variablename with \c glue. If this value is
3391 non-empty it prefixes the value with \e before and suffix it with \e
3392 after. \e variablename is the only required field, the others default
3393 to empty strings. If you need to encode spaces in \e glue, \e before, or \e
3394 after you must quote them.
3395
3396 \section1 member(variablename, position)
3397
3398 Returns the value at the given \e position in the list of items in
3399 \e variablename.
3400 If an item cannot be found at the position specified, an empty string is
3401 returned. \e variablename is the only required field. If not specified,
3402 \c position defaults to 0, causing the first value in the list to be
3403 returned.
3404
3405 \section1 message(string)
3406
3407 This function simply writes a message to the console. Unlike the
3408 \c error() function, this function allows processing to continue.
3409
3410 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 68
3411
3412 The above line causes "This is a message" to be written to the console.
3413 The use of quotation marks is optional.
3414
3415 \note By default, messages are written out for each Makefile generated by
3416 qmake for a given project. If you want to ensure that messages only appear
3417 once for each project, test the \c build_pass variable
3418 \l{qmake Advanced Usage}{in conjunction with a scope} to filter out
3419 messages during builds; for example:
3420
3421 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 69
3422
3423 \section1 prompt(question)
3424
3425 Displays the specified \e question, and returns a value read from stdin.
3426
3427 \section1 quote(string)
3428
3429 Converts a whole \e string into a single entity and returns the result.
3430 Newlines, carriage returns, and tabs can be specified in the string
3431 with \\n \\r and \\t. The return value does not contain either single
3432 or double quotation marks unless you explicitly include them yourself,
3433 but will be placed into a single entry (for literal expansion).
3434
3435 \section1 replace(string, old_string, new_string)
3436
3437 Replaces each instance of \c old_string with \c new_string in the
3438 contents of the variable supplied as \c string. For example, the
3439 code
3440
3441 \snippet doc/src/snippets/qmake/replace.pro 0
3442
3443 prints the message:
3444
3445 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 70
3446
3447 \section1 sprintf(string, arguments...)
3448
3449 Replaces %1-%9 with the arguments passed in the comma-separated list
3450 of function \e arguments and returns the processed string.
3451
3452 \section1 system(command)
3453 [Conditional]
3454
3455 Executes the given \c command in a secondary shell, and succeeds
3456 if the command returns with a zero exit status; otherwise fails.
3457 You can check the return value of this function using a scope:
3458
3459 For example:
3460
3461 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 71
3462
3463 Alternatively, you can use this function to obtain stdout and stderr
3464 from the command, and assign it to a variable. For example, you can
3465 use this to interrogate information about the platform:
3466
3467 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 72
3468
3469 \target unique
3470 \section1 unique(variablename)
3471
3472 This will return a list of values in variable that are unique (that is
3473 with repetitive entries removed). For example:
3474
3475 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 73
3476
3477 \section1 warning(string)
3478
3479 This function will always succeed, and will display the given
3480 \e string to the user. message() is a synonym for warning().
3481*/
3482
3483/*!
3484 \page qmake-environment-reference.html
3485 \contentspage {qmake Manual}{Contents}
3486 \previouspage qmake Function Reference
3487
3488 \title Configuring qmake's Environment
3489
3490 \tableofcontents
3491
3492 \target Properties
3493 \section1 Properties
3494
3495 \c qmake has a system of persistant information, this allows you to
3496 \c set a variable in qmake once, and each time qmake is invoked this
3497 value can be queried. Use the following to set a property in qmake:
3498
3499 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 74
3500
3501 The appropriate variable and value should be substituted for
3502 \c VARIABLE and \c VALUE.
3503
3504 To retrieve this information back from qmake you can do:
3505
3506 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 75
3507
3508 \note \c{qmake -query} will only list variables that you have
3509 previously set with \c{qmake -set VARIABLE VALUE}.
3510
3511 This information will be saved into a QSettings object (meaning it
3512 will be stored in different places for different platforms). As
3513 \c VARIABLE is versioned as well, you can set one value in an older
3514 version of \c qmake, and newer versions will retrieve this value. However,
3515 if you set \c VARIABLE for a newer version of \c qmake, the older version
3516 will not use this value. You can however query a specific version of a
3517 variable if you prefix that version of \c qmake to \c VARIABLE, as in
3518 the following example:
3519
3520 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 76
3521
3522 \c qmake also has the notion of \c builtin properties, for example you can
3523 query the installation of Qt for this version of \c qmake with the
3524 \c QT_INSTALL_PREFIX property:
3525
3526 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 77
3527
3528 These built-in properties cannot have a version prefixed to them as
3529 they are not versioned, and each version of \c qmake will have its own
3530 built-in set of these values. The list below outlines the built-in
3531 properties:
3532
3533 \list
3534 \o \c QT_INSTALL_PREFIX - Where the version of Qt this qmake is built for resides
3535 \o \c QT_INSTALL_DATA - Where data for this version of Qt resides
3536 \o \c QMAKE_VERSION - The current version of qmake
3537 \endlist
3538
3539 Finally, these values can be queried in a project file with a special
3540 notation such as:
3541
3542 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 78
3543
3544 \target QMAKESPEC
3545 \section1 QMAKESPEC
3546
3547 \c qmake requires a platform and compiler description file which
3548 contains many default values used to generate appropriate Makefiles.
3549 The standard Qt distribution comes with many of these files, located
3550 in the \c mkspecs subdirectory of the Qt installation.
3551
3552 The \c QMAKESPEC environment variable can contain any of the following:
3553
3554 \list
3555 \o A complete path to a directory containing a \c{qmake.conf} file.
3556 In this case \c qmake will open the \c{qmake.conf} file from within that
3557 directory. If the file does not exist, \c qmake will exit with an
3558 error.
3559 \o The name of a platform-compiler combination. In this case, \c qmake
3560 will search in the directory specified by the \c mkspecs subdirectory
3561 of the data path specified when Qt was compiled (see
3562 QLibraryInfo::DataPath).
3563 \endlist
3564
3565 \bold{Note:} The \c QMAKESPEC path will automatically be added to the
3566 \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} system variable.
3567
3568 \target INSTALLS
3569 \section1 INSTALLS
3570
3571 It is common on Unix to also use the build tool to install applications
3572 and libraries; for example, by invoking \c{make install}. For this reason,
3573 \c qmake has the concept of an install set, an object which contains
3574 instructions about the way part of a project is to be installed.
3575 For example, a collection of documentation files can be described in the
3576 following way:
3577
3578 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 79
3579
3580 The \c path member informs \c qmake that the files should be installed in
3581 \c /usr/local/program/doc (the path member), and the \c files member
3582 specifies the files that should be copied to the installation directory.
3583 In this case, everything in the \c docs directory will be coped to
3584 \c /usr/local/program/doc.
3585
3586 Once an install set has been fully described, you can append it to the
3587 install list with a line like this:
3588
3589 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 80
3590
3591 \c qmake will ensure that the specified files are copied to the installation
3592 directory. If you require greater control over this process, you can also
3593 provide a definition for the \c extra member of the object. For example,
3594 the following line tells \c qmake to execute a series of commands for this
3595 install set:
3596
3597 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 81
3598
3599 The \c unix scope
3600 (see \l{qmake Advanced Usage#Scopes and Conditions}{Scopes and Conditions})
3601 ensures that these particular commands are only executed on Unix platforms.
3602 Appropriate commands for other platforms can be defined using other scope
3603 rules.
3604
3605 Commands specified in the \c extra member are executed before the instructions
3606 in the other members of the object are performed.
3607
3608 If you append a built-in install set to the \c INSTALLS variable and do
3609 not specify \c files or \c extra members, \c qmake will decide what needs to
3610 be copied for you. Currently, the only supported built-in install set is
3611 \c target:
3612
3613 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 82
3614
3615 In the above lines, \c qmake knows what needs to be copied, and will handle
3616 the installation process automatically.
3617
3618 \target cache
3619 \section1 Cache File
3620
3621 The cache file is a special file \c qmake reads to find settings not specified
3622 in the \c qmake.conf file, project files, or at the command line. If
3623 \c -nocache is not specified when \c qmake is run, it will try to find a file
3624 called \c{.qmake.cache} in parent directories of the current directory. If
3625 it fails to find this file, it will silently ignore this step of processing.
3626
3627 If it finds a \c{.qmake.cache} file then it will process this file first before
3628 it processes the project file.
3629
3630 \target LibDepend
3631 \section1 Library Dependencies
3632
3633 Often when linking against a library, \c qmake relies on the underlying
3634 platform to know what other libraries this library links against, and
3635 lets the platform pull them in. In many cases, however, this is not
3636 sufficent. For example, when statically linking a library, no other
3637 libraries are linked to, and therefore no dependencies to those
3638 libraries are created. However, an application that later links
3639 against this library will need to know where to find the symbols that
3640 the static library will require. To help with this situation, \c qmake
3641 attempts to follow a library's dependencies where appropriate, but
3642 this behavior must be explicitly enabled by following two steps.
3643
3644 The first step is to enable dependency tracking in the library itself.
3645 To do this you must tell \c qmake to save information about the library:
3646
3647 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 83
3648
3649 This is only relevant to the \c lib template, and will be ignored for
3650 all others. When this option is enabled, \c qmake will create a file
3651 ending in .prl which will save some meta-information about the
3652 library. This metafile is just like an ordinary project file, but only
3653 contains internal variable declarations. You are free to view this file
3654 and, if it is deleted, \c qmake will know to recreate it when necessary,
3655 either when the project file is later read, or if a dependent library
3656 (described below) has changed. When installing this library, by
3657 specifying it as a target in an \c INSTALLS declaration, \c qmake will
3658 automatically copy the .prl file to the installation path.
3659
3660 The second step in this process is to enable reading of this meta
3661 information in the applications that use the static library:
3662
3663 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 84
3664
3665 When this is enabled, \c qmake will process all libraries linked to
3666 by the application and find their meta-information. \c qmake will use
3667 this to determine the relevant linking information, specifically adding
3668 values to the application project file's list of \c DEFINES as well as
3669 \c LIBS. Once \c qmake has processed this file, it will then look through
3670 the newly introduced libraries in the \c LIBS variable, and find their
3671 dependent .prl files, continuing until all libraries have been resolved.
3672 At this point, the Makefile is created as usual, and the libraries are
3673 linked explicitlyy against the application.
3674
3675 The internals of the .prl file are left closed so they can easily
3676 change later. They are not designed to be changed by hand, should only
3677 be created by \c qmake, and should not be transferred between operating
3678 systems as they may contain platform-dependent information.
3679
3680 \target Extensions
3681 \section1 File Extensions
3682
3683 Under normal circumstances \c qmake will try to use appropriate file extensions
3684 for your platform. However, it is sometimes necessary to override the default
3685 choices for each platform and explicitly define file extensions for \c qmake to use.
3686 This is achieved by redefining certain built-in variables; for example the extension
3687 used for \l moc files can be redefined with the following assignment in a project
3688 file:
3689
3690 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 85
3691
3692 The following variables can be used to redefine common file extensions recognized
3693 by \c qmake:
3694
3695 \list
3696 \o QMAKE_EXT_MOC - This modifies the extension placed on included moc files.
3697 \o QMAKE_EXT_UI - This modifies the extension used for designer UI files (usually
3698 in \c FORMS).
3699 \o QMAKE_EXT_PRL - This modifies the extension placed on
3700 \l{#LibDepend}{library dependency files}.
3701 \o QMAKE_EXT_LEX - This changes the suffix used in files (usually in \c LEXSOURCES).
3702 \o QMAKE_EXT_YACC - This changes the suffix used in files (usually in \c YACCSOURCES).
3703 \o QMAKE_EXT_OBJ - This changes the suffix used on generated object files.
3704 \endlist
3705
3706 All of the above accept just the first value, so you must assign to it just one
3707 value that will be used throughout your project file. There are two variables that
3708 accept a list of values:
3709
3710 \list
3711 \o QMAKE_EXT_CPP - Causes \c qmake to interpret all files with these suffixes as
3712 C++ source files.
3713 \o QMAKE_EXT_H - Causes \c qmake to interpret all files with these suffixes as
3714 C and C++ header files.
3715 \endlist
3716
3717 \target Customizing
3718 \section1 Customizing Makefile Output
3719
3720 \c qmake tries to do everything expected of a cross-platform build tool.
3721 This is often less than ideal when you really need to run special
3722 platform-dependent commands. This can be achieved with specific instructions
3723 to the different \c qmake backends.
3724
3725 Customization of the Makefile output is performed through an object-style
3726 API as found in other places in \c qmake. Objects are defined automatically
3727 by specifying their members; for example:
3728
3729 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 86
3730
3731 The definitions above define a \c qmake target called \c mytarget, containing
3732 a Makefile target called \c{.buildfile} which in turn is generated with
3733 the \c touch command. Finally, the \c{.depends} member specifies that
3734 \c mytarget depends on \c mytarget2, another target that is defined afterwards.
3735 \c mytarget2 is a dummy target; it is only defined to echo some text to
3736 the console.
3737
3738 The final step is to instruct \c qmake that this object is a target to be built:
3739
3740 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 87
3741
3742 This is all you need to do to actually build custom targets. Of course, you may
3743 want to tie one of these targets to the
3744 \l{qmake Variable Reference#TARGET}{qmake build target}. To do this, you simply need to
3745 include your Makefile target in the list of
3746 \l{qmake Variable Reference#PRE_TARGETDEPS}{PRE_TARGETDEPS}.
3747
3748 The following tables are an overview of the options available to you with the QMAKE_EXTRA_TARGETS
3749 variable.
3750
3751 \table
3752 \header
3753 \o Member
3754 \o Description
3755 \row
3756 \o commands
3757 \o The commands for generating the custom build target.
3758 \row
3759 \o CONFIG
3760 \o Specific configuration options for the custom build target. See the CONFIG table for details.
3761 \row
3762 \o depends
3763 \o The existing build targets that the custom build target depends on.
3764 \row
3765 \o recurse
3766 \o Specifies which sub-targets should used when creating the rules in the Makefile to call in
3767 the sub-target specific Makefile. This is only used when \c recursive is set in the CONFIG.
3768 \row
3769 \o recurse_target
3770 \o Specifies the target that should be built via the sub-target Makefile for the rule in the Makefile.
3771 This adds something like $(MAKE) -f Makefile.[subtarget] [recurse_target]. This is only used when
3772 \c recursive is set in the CONFIG.
3773 \row
3774 \o target
3775 \o The file being created by the custom build target.
3776 \endtable
3777
3778 List of members specific to the CONFIG option:
3779
3780 \table
3781 \header
3782 \o Member
3783 \o Description
3784 \row
3785 \o recursive
3786 \o Indicates that rules should be created in the Makefile and thus call
3787 the relevant target inside the sub-target specific Makefile. This defaults to creating
3788 an entry for each of the sub-targets.
3789 \endtable
3790
3791 For convenience, there is also a method of customizing projects
3792 for new compilers or preprocessors:
3793
3794 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 88
3795
3796 With the above definitions, you can use a drop-in replacement for moc if one
3797 is available. The commands is executed on all arguments given to the
3798 \c NEW_HEADERS variable (from the \c input member), and the result is written
3799 to the file defined by the \c output member; this file is added to the
3800 other source files in the project.
3801 Additionally, \c qmake will execute \c depend_command to generate dependency
3802 information, and place this information in the project as well.
3803
3804 These commands can easily be placed into a cache file, allowing subsequent
3805 project files to add arguments to \c NEW_HEADERS.
3806
3807 The following tables are an overview of the options available to you with the QMAKE_EXTRA_COMPILERS
3808 variable.
3809
3810 \table
3811 \header
3812 \o Member
3813 \o Description
3814 \row
3815 \o commands
3816 \o The commands used for for generating the output from the input.
3817 \row
3818 \o CONFIG
3819 \o Specific configuration options for the custom compiler. See the CONFIG table for details.
3820 \row
3821 \o depend_command
3822 \o Specifies a command used to generate the list of dependencies for the output.
3823 \row
3824 \o dependency_type
3825 \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
3826 TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
3827 \row
3828 \o depends
3829 \o Specifies the dependencies of the output file.
3830 \row
3831 \o input
3832 \o The variable that contains the files that should be processed with the custom compiler.
3833 \row
3834 \o name
3835 \o A description of what the custom compiler is doing. This is only used in some backends.
3836 \row
3837 \o output
3838 \o The filename that is created from the custom compiler.
3839 \row
3840 \o output_function
3841 \o Specifies a custom qmake function that is used to specify the filename to be created.
3842 \row
3843 \o variable_out
3844 \o The variable that the files created from the output should be added to.
3845 \endtable
3846
3847 List of members specific to the CONFIG option:
3848
3849 \table
3850 \header
3851 \o Member
3852 \o Description
3853 \row
3854 \o commands
3855 \o The commands used for for generating the output from the input.
3856 \row
3857 \o CONFIG
3858 \o Specific configuration options for the custom compiler. See the CONFIG table for details.
3859 \row
3860 \o depend_command
3861 \o Specifies a command used to generate the list of dependencies for the output.
3862 \row
3863 \o dependency_type
3864 \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
3865 TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
3866 \row
3867 \o depends
3868 \o Specifies the dependencies of the output file.
3869 \row
3870 \o input
3871 \o The variable that contains the files that should be processed with the custom compiler.
3872 \row
3873 \o name
3874 \o A description of what the custom compiler is doing. This is only used in some backends.
3875 \row
3876 \o output
3877 \o The filename that is created from the custom compiler.
3878 \row
3879 \o output_function
3880 \o Specifies a custom qmake function that is used to specify the filename to be created.
3881 \row
3882 \o variables
3883 \o Indicates that the variables specified here are replaced with $(QMAKE_COMP_VARNAME) when refered to
3884 in the pro file as $(VARNAME).
3885 \row
3886 \o variable_out
3887 \o The variable that the files created from the output should be added to.
3888 \endtable
3889
3890 List of members specific to the CONFIG option:
3891
3892 \table
3893 \header
3894 \o Member
3895 \o Description
3896 \row
3897 \o combine
3898 \o Indicates that all of the input files are combined into a single output file.
3899 \row
3900 \o target_predeps
3901 \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
3902 \row
3903 \o explicit_dependencies
3904 \o The dependencies for the output only get generated from the depends member and from
3905 nowhere else.
3906 \row
3907 \o no_link
3908 \o Indicates that the output should not be added to the list of objects to be linked in.
3909 \endtable
3910
3911 \note Symbian platform specific: Generating objects to be linked in is
3912 not supported on the Symbian platform, so either the \c CONFIG option
3913 \c no_link or variable \c variable_out should always be defined for
3914 extra compilers.
3915
3916*/
3917
3918/*!
3919 \page qmake-advanced-usage.html
3920 \title qmake Advanced Usage
3921 \contentspage {qmake Manual}{Contents}
3922 \previouspage qmake Platform Notes
3923 \nextpage Using Precompiled Headers
3924
3925 Many \c qmake project files simply describe the sources and header files used
3926 by the project, using a list of \c{name = value} and \c{name += value}
3927 definitions. \c qmake also provides other operators, functions, and scopes
3928 that can be used to process the information supplied in variable declarations.
3929 These advanced features allow Makefiles to be generated for multiple platforms
3930 from a single project file.
3931
3932 \tableofcontents
3933
3934 \section1 Operators
3935
3936 In many project files, the assignment (\c{=}) and append (\c{+=}) operators can
3937 be used to include all the information about a project. The typical pattern of
3938 use is to assign a list of values to a variable, and append more values
3939 depending on the result of various tests. Since \c qmake defines certain
3940 variables using default values, it is sometimes necessary to use the removal
3941 (\c{-=}) operator to filter out values that are not required. The following
3942 operators can be used to manipulate the contents of variables.
3943
3944 The \c = operator assigns a value to a variable:
3945
3946 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 89
3947
3948 The above line sets the \c TARGET variable to \c myapp. This will overwrite any
3949 values previously set for \c TARGET with \c myapp.
3950
3951 The \c += operator appends a new value to the list of values in a variable:
3952
3953 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 90
3954
3955 The above line appends \c QT_DLL to the list of pre-processor defines to be put
3956 in the generated Makefile.
3957
3958 The \c -= operator removes a value from the list of values in a variable:
3959
3960 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 91
3961
3962 The above line removes \c QT_DLL from the list of pre-processor defines to be
3963 put in the generated Makefile.
3964
3965 The \c *= operator adds a value to the list of values in a variable, but only
3966 if it is not already present. This prevents values from being included many
3967 times in a variable. For example:
3968
3969 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 92
3970
3971 In the above line, \c QT_DLL will only be added to the list of pre-processor
3972 defines if it is not already defined. Note that the
3973 \l{qmake Function Reference#unique}{unique()}
3974 function can also be used to ensure that a variables only contains one
3975 instance of each value.
3976
3977 The \c ~= operator replaces any values that match a regular expression with
3978 the specified value:
3979
3980 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 93
3981
3982 In the above line, any values in the list that start with \c QT_D or \c QT_T are
3983 replaced with \c QT.
3984
3985 The \c $$ operator is used to extract the contents of a variable, and can be
3986 used to pass values between variables or supply them to functions:
3987
3988 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 94
3989
3990 \target Scopes
3991 \section1 Scopes
3992
3993 Scopes are similar to \c if statements in procedural programming languages.
3994 If a certain condition is true, the declarations inside the scope are processed.
3995
3996 \section2 Syntax
3997
3998 Scopes consist of a condition followed by an opening brace on the same line,
3999 a sequence of commands and definitions, and a closing brace on a new line:
4000
4001 \snippet doc/src/snippets/qmake/scopes.pro syntax
4002
4003 The opening brace \e{must be written on the same line as the condition}.
4004 Scopes may be concatenated to include more than one condition; see below
4005 for examples.
4006
4007 \section2 Scopes and Conditions
4008
4009 A scope is written as a condition followed by a series of declarations
4010 contained within a pair of braces; for example:
4011
4012 \snippet doc/src/snippets/qmake/scopes.pro 0
4013
4014 The above code will add the \c paintwidget_win.cpp file to the sources listed
4015 in the generated Makefile if \c qmake is used on a Windows platform.
4016 If \c qmake is used on a platform other than Windows, the define will be
4017 ignored.
4018
4019 The conditions used in a given scope can also be negated to provide an
4020 alternative set of declarations that will be processed only if the
4021 original condition is false. For example, suppose we want to process
4022 something on all platforms \e except for Windows. We can achieve this by
4023 negating the scope like this:
4024
4025 \snippet doc/src/snippets/qmake/scopes.pro 1
4026
4027 Scopes can be nested to combine more than one condition. For instance, if
4028 you want to include a particular file for a certain platform only if
4029 debugging is enabled then you write the following:
4030
4031 \snippet doc/src/snippets/qmake/scopes.pro 2
4032
4033 To save writing many nested scopes, you can nest scopes using the \c :
4034 operator. The nested scopes in the above example can be rewritten in
4035 the following way:
4036
4037 \snippet doc/src/snippets/qmake/scopes.pro 3
4038
4039 You may also use the \c : operator to perform single line conditional
4040 assignments; for example:
4041
4042 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 95
4043
4044 The above line adds \c QT_DLL to the \c DEFINES variable only on the
4045 Windows platform.
4046 Generally, the \c : operator behaves like a logical AND operator, joining
4047 together a number of conditions, and requiring all of them to be true.
4048
4049 There is also the \c | operator to act like a logical OR operator, joining
4050 together a number of conditions, and requiring only one of them to be true.
4051
4052 \snippet doc/src/snippets/qmake/scopes.pro 4
4053
4054 You can also provide alternative declarations to those within a scope by
4055 using an \c else scope. Each \c else scope is processed if the conditions
4056 for the preceding scopes are false.
4057 This allows you to write complex tests when combined with other scopes
4058 (separated by the \c : operator as above). For example:
4059
4060 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 96
4061
4062 \section2 Configuration and Scopes
4063
4064 The values stored in the
4065 \l{qmake-project-files.html#GeneralConfiguration}{\c CONFIG variable}
4066 are treated specially by \c qmake. Each of the possible values can be
4067 used as the condition for a scope. For example, the list of values
4068 held by \c CONFIG can be extended with the \c opengl value:
4069
4070 \snippet doc/src/snippets/qmake/configscopes.pro 0
4071
4072 As a result of this operation, any scopes that test for \c opengl will
4073 be processed. We can use this feature to give the final executable an
4074 appropriate name:
4075
4076 \snippet doc/src/snippets/qmake/configscopes.pro 1
4077 \snippet doc/src/snippets/qmake/configscopes.pro 2
4078 \snippet doc/src/snippets/qmake/configscopes.pro 3
4079
4080 This feature makes it easy to change the configuration for a project
4081 without losing all the custom settings that might be needed for a specific
4082 configuration. In the above code, the declarations in the first scope are
4083 processed, and the final executable will be called \c application-gl.
4084 However, if \c opengl is not specified, the declarations in the second
4085 scope are processed instead, and the final executable will be called
4086 \c application.
4087
4088 Since it is possible to put your own values on the \c CONFIG
4089 line, this provides you with a convenient way to customize project files
4090 and fine-tune the generated Makefiles.
4091
4092 \section2 Platform Scope Values
4093
4094 In addition to the \c win32, \c macx, and \c unix values used in many
4095 scope conditions, various other built-in platform and compiler-specific
4096 values can be tested with scopes. These are based on platform
4097 specifications provided in Qt's \c mkspecs directory. For example, the
4098 following lines from a project file show the current specification in
4099 use and test for the \c linux-g++ specification:
4100
4101 \snippet doc/src/snippets/qmake/specifications.pro 0
4102
4103 You can test for any other platform-compiler combination as long as a
4104 specification exists for it in the \c mkspecs directory.
4105
4106 The scope \c unix is true for the Symbian platform.
4107
4108 \section1 Variables
4109
4110 Many of the variables used in project files are special variables that
4111 \c qmake uses when generating Makefiles, such as \c DEFINES, \c SOURCES,
4112 and \c HEADERS. It is possible for you to create variables for your own
4113 use; \c qmake creates new variables with a given name when it encounters
4114 an assignment to that name. For example:
4115
4116 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 97
4117
4118 There are no restricitions on what you do to your own variables, as \c
4119 qmake will ignore them unless it needs to evaluate them when processing
4120 a scope.
4121
4122 You can also assign the value of a current variable to another
4123 variable by prefixing $$ to the variable name. For example:
4124
4125 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 98
4126
4127 Now the MY_DEFINES variable contains what is in the DEFINES variable at
4128 this point in the project file. This is also equivalent to:
4129
4130 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 99
4131
4132 The second notation allows you to append the contents of the variable to
4133 another value without separating the two with a space. For example, the
4134 following will ensure that the final executable will be given a name
4135 that includes the project template being used:
4136
4137 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 100
4138
4139 Variables can be used to store the contents of environment variables.
4140 These can be evaluated at the time that \c qmake is run, or included
4141 in the generated Makefile for evaluation when the project is built.
4142
4143 To obtain the contents of an environment value when \c qmake is run,
4144 use the \c $$(...) operator:
4145
4146 \snippet doc/src/snippets/qmake/environment.pro 0
4147
4148 In the above assignment, the value of the \c PWD environment variable
4149 is read when the project file is processed.
4150
4151 To obtain the contents of an environment value at the time when the
4152 generated Makefile is processed, use the \c $(...) operator:
4153
4154 \snippet doc/src/snippets/qmake/environment.pro 1
4155
4156 In the above assignment, the value of \c PWD is read immediately
4157 when the project file is processed, but \c $(PWD) is assigned to
4158 \c DESTDIR in the generated Makefile. This makes the build process
4159 more flexible as long as the environment variable is set correctly
4160 when the Makefile is processed.
4161
4162 The special \c $$[...] operator can be used to access various
4163 configuration options that were set when Qt was built:
4164
4165 \snippet doc/src/snippets/qmake/qtconfiguration.pro 0
4166
4167 The variables accessible with this operator are typically used to
4168 enable third party plugins and components to be integrated with Qt.
4169 For example, a \QD plugin can be installed alongside \QD's built-in
4170 plugins if the following declaration is made in its project file:
4171
4172 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 101
4173
4174 \target VariableProcessingFunctions
4175 \section1 Variable Processing Functions
4176
4177 \c qmake provides a selection of built-in functions to allow the
4178 contents of variables to be processed. These functions process the
4179 arguments supplied to them and return a value, or list of values, as
4180 a result. In order to assign a result to a variable, it is necessary
4181 to use the \c $$ operator with this type of function in the same way
4182 used to assign contents of one variable to another:
4183
4184 \snippet doc/src/snippets/qmake/functions.pro 1
4185
4186 This type of function should be used on the right-hand side of
4187 assignments (i.e, as an operand).
4188
4189 It is possible to define your own functions for processing the
4190 contents of variables. These functions can be defined in the following
4191 way:
4192
4193 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 102
4194
4195 The following example function takes a variable name as its only
4196 argument, extracts a list of values from the variable with the
4197 \l{qmake-function-reference.html}{eval()} built-in function,
4198 and compiles a list of files:
4199
4200 \snippet doc/src/snippets/qmake/replacefunction.pro 0
4201
4202 \target ConditionalFunctions
4203 \section1 Conditional Functions
4204
4205 \c qmake provides built-in functions that can be used as conditions
4206 when writing scopes. These functions do not return a value, but
4207 instead indicate "success" or "failure":
4208
4209 \snippet doc/src/snippets/qmake/functions.pro 3
4210
4211 This type of function should be used in conditional expressions
4212 only.
4213
4214 It is possible to define your own functions to provide conditions
4215 for scopes. The following example tests whether each file in a list
4216 exists and returns true if they all exist, or false if not:
4217
4218 \snippet doc/src/snippets/qmake/testfunction.pro 0
4219
4220 \section1 Adding New Configuration Features
4221
4222 \c qmake lets you create your own \e features that can be included in
4223 project files by adding their names to the list of values specified by
4224 the \c CONFIG variable. Features are collections of custom functions and
4225 definitions in \c{.prf} files that can reside in one of many standard
4226 directories. The locations of these directories are defined in a number
4227 of places, and \c qmake checks each of them in the following order when
4228 it looks for \c{.prf} files:
4229
4230 \list 1
4231 \o In a directory listed in the \c QMAKEFEATURES environment variable;
4232 this contains a colon-separated list of directories.
4233 \o In a directory listed in the \c QMAKEFEATURES property variable; this
4234 contains a colon-spearated list of directories.
4235 \omit
4236 \o In a features directory beneath the project's root directory (where
4237 the \c{.qmake.cache} file is generated).
4238 \endomit
4239 \o In a features directory residing within a \c mkspecs directory.
4240 \c mkspecs directories can be located beneath any of the directories
4241 listed in the \c QMAKEPATH environment variable (a colon-separated list
4242 of directories). (\c{$QMAKEPATH/mkspecs/<features>})
4243 \o In a features directory residing beneath the directory provided by the
4244 \c QMAKESPEC environment variable. (\c{$QMAKESPEC/<features>})
4245 \o In a features directory residing in the \c data_install/mkspecs directory.
4246 (\c{data_install/mkspecs/<features>})
4247 \o In a features directory that exists as a sibling of the directory
4248 specified by the \c QMAKESPEC environment variable.
4249 (\c{$QMAKESPEC/../<features>})
4250 \endlist
4251
4252 The following features directories are searched for features files:
4253
4254 \list 1
4255 \o \c{features/unix}, \c{features/win32}, or \c{features/macx}, depending on
4256 the platform in use
4257 \o \c features/
4258 \endlist
4259
4260 For example, consider the following assignment in a project file:
4261
4262 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 103
4263
4264 With this addition to the \c CONFIG variable, \c qmake will search the
4265 locations listed above for the \c myfeatures.prf file after it has
4266 finished parsing your project file. On Unix systems, it will look for
4267 the following file:
4268
4269 \list 1
4270 \o \c $QMAKEFEATURES/myfeatures.prf (for each directory listed in the
4271 \c QMAKEFEATURES environment variable)
4272 \o \c $$QMAKEFEATURES/myfeatures.prf (for each directory listed in the
4273 \c QMAKEFEATURES property variable)
4274 \o \c myfeatures.prf (in the project's root directory)
4275 \o \c $QMAKEPATH/mkspecs/features/unix/myfeatures.prf and
4276 \c $QMAKEPATH/mkspecs/features/myfeatures.prf (for each directory
4277 listed in the \c QMAKEPATH environment variable)
4278 \o \c $QMAKESPEC/features/unix/myfeatures.prf and
4279 \c $QMAKESPEC/features/myfeatures.prf
4280 \o \c data_install/mkspecs/features/unix/myfeatures.prf and
4281 \c data_install/mkspecs/features/myfeatures.prf
4282 \o \c $QMAKESPEC/../features/unix/myfeatures.prf and
4283 \c $QMAKESPEC/../features/myfeatures.prf
4284 \endlist
4285
4286 \note The \c{.prf} files must have names in lower case.
4287
4288
4289*/
4290
4291/*!
4292 \page qmake-precompiledheaders.html
4293 \title Using Precompiled Headers
4294 \contentspage {qmake Manual}{Contents}
4295 \previouspage qmake Advanced Usage
4296 \nextpage qmake Reference
4297
4298 \target Introduction
4299
4300 Precompiled headers are a performance feature supported by some
4301 compilers to compile a stable body of code, and store the compiled
4302 state of the code in a binary file. During subsequent compilations,
4303 the compiler will load the stored state, and continue compiling the
4304 specified file. Each subsequent compilation is faster because the
4305 stable code does not need to be recompiled.
4306
4307 \c qmake supports the use of precompiled headers (PCH) on some
4308 platforms and build environments, including:
4309 \list
4310 \o Windows
4311 \list
4312 \o nmake
4313 \o Dsp projects (VC 6.0)
4314 \o Vcproj projects (VC 7.0 \& 7.1)
4315 \endlist
4316 \o Mac OS X
4317 \list
4318 \o Makefile
4319 \o Xcode
4320 \endlist
4321 \o Unix
4322 \list
4323 \o GCC 3.4 and above
4324 \endlist
4325 \endlist
4326
4327 \target ADD_PCH
4328 \section1 Adding Precompiled Headers to Your Project
4329
4330 \target PCH_CONTENTS
4331 \section2 Contents of the Precompiled Header File
4332
4333 The precompiled header must contain code which is \e stable
4334 and \e static throughout your project. A typical PCH might look
4335 like this:
4336
4337 \section3 Example: \c stable.h
4338
4339 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 104
4340
4341 Note that a precompiled header file needs to separate C includes from
4342 C++ includes, since the precompiled header file for C files may not
4343 contain C++ code.
4344
4345 \target PROJECT_OPTIONS
4346 \section2 Project Options
4347
4348 To make your project use PCH, you only need to define the
4349 \c PRECOMPILED_HEADER variable in your project file:
4350
4351 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 105
4352
4353 \c qmake will handle the rest, to ensure the creation and use of the
4354 precompiled header file. You do not need to include the precompiled
4355 header file in \c HEADERS, as \c qmake will do this if the configuration
4356 supports PCH.
4357
4358 All platforms that support precompiled headers have the configuration
4359 option \c precompile_header set. Using this option, you may trigger
4360 conditional blocks in your project file to add settings when using PCH.
4361 For example:
4362
4363 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 106
4364
4365 \section1 Notes on Possible Issues
4366
4367 On some platforms, the file name suffix for precompiled header files is
4368 the same as that for other object files. For example, the following
4369 declarations may cause two different object files with the same name to
4370 be generated:
4371
4372 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 107
4373
4374 To avoid potential conflicts like these, it is good practice to ensure
4375 that header files that will be precompiled are given distinctive names.
4376
4377 \target EXAMPLE_PROJECT
4378 \section1 Example Project
4379
4380 You can find the following source code in the
4381 \c{examples/qmake/precompile} directory in the Qt distribution:
4382
4383 \section2 \c mydialog.ui
4384
4385 \quotefromfile examples/qmake/precompile/mydialog.ui
4386 \printuntil
4387
4388 \section2 \c stable.h
4389
4390 \snippet examples/qmake/precompile/stable.h 0
4391
4392 \section2 \c myobject.h
4393
4394 \snippet examples/qmake/precompile/myobject.h 0
4395
4396 \section2 \c myobject.cpp
4397
4398 \snippet examples/qmake/precompile/myobject.cpp 0
4399
4400 \section2 \c util.cpp
4401
4402 \snippet examples/qmake/precompile/util.cpp 0
4403
4404 \section2 \c main.cpp
4405
4406 \snippet examples/qmake/precompile/main.cpp 0
4407
4408 \section2 \c precompile.pro
4409
4410 \snippet examples/qmake/precompile/precompile.pro 0
4411*/
4412
4413/*!
4414 \page qmake-tutorial.html
4415 \title qmake Tutorial
4416 \contentspage {qmake Manual}{Contents}
4417 \previouspage qmake Manual
4418 \nextpage qmake Common Projects
4419
4420 This tutorial teaches you how to use \c qmake. We recommend that
4421 you read the \c qmake user guide after completing this tutorial.
4422
4423 \section1 Starting off Simple
4424
4425 Let's assume that you have just finished a basic implementation of
4426 your application, and you have created the following files:
4427
4428 \list
4429 \o hello.cpp
4430 \o hello.h
4431 \o main.cpp
4432 \endlist
4433
4434 You will find these files in the \c{examples/qmake/tutorial} directory
4435 of the Qt distribution. The only other thing you know about the setup of
4436 the application is that it's written in Qt. First, using your favorite
4437 plain text editor, create a file called \c hello.pro in
4438 \c{examples/qmake/tutorial}. The first thing you need to do is add the
4439 lines that tell \c qmake about the source and header files that are part
4440 of your development project.
4441
4442 We'll add the source files to the project file first. To do this you
4443 need to use the \l{qmake Variable Reference#SOURCES}{SOURCES} variable.
4444 Just start a new line with \c {SOURCES +=} and put hello.cpp after it.
4445 You should have something like this:
4446
4447 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 108
4448
4449 We repeat this for each source file in the project, until we end up
4450 with the following:
4451
4452 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 109
4453
4454 If you prefer to use a Make-like syntax, with all the files listed in
4455 one go you can use the newline escaping like this:
4456
4457 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 110
4458
4459 Now that the source files are listed in the project file, the header
4460 files must be added. These are added in exactly the same way as source
4461 files, except that the variable name we use is
4462 \l{qmake Variable Reference#HEADERS}{HEADERS}.
4463
4464 Once you have done this, your project file should look something like
4465 this:
4466
4467 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 111
4468
4469 The target name is set automatically; it is the same as the project
4470 file, but with the suffix appropriate to the platform. For example, if
4471 the project file is called \c hello.pro, the target will be \c hello.exe
4472 on Windows and \c hello on Unix. If you want to use a different name
4473 you can set it in the project file:
4474
4475 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 112
4476
4477 The final step is to set the \l{qmake Variable Reference#CONFIG}{CONFIG}
4478 variable. Since this is a Qt application, we need to put \c qt on the
4479 \c CONFIG line so that \c qmake will add the relevant libraries to be
4480 linked against and ensure that build lines for \c moc and \c uic are
4481 included in the generated Makefile.
4482
4483 The finished project file should look like this:
4484
4485 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 113
4486
4487 You can now use \c qmake to generate a Makefile for your application.
4488 On the command line, in your project's directory, type the following:
4489
4490 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 114
4491
4492 Then type \c make or \c nmake depending on the compiler you use.
4493
4494 For Visual Studio users, \c qmake can also generate \c .dsp or
4495 \c .vcproj files, for example:
4496
4497 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 115
4498
4499 \section1 Making an Application Debuggable
4500
4501 The release version of an application doesn't contain any debugging
4502 symbols or other debugging information. During development it is useful
4503 to produce a debugging version of the application that has the
4504 relevant information. This is easily achieved by adding \c debug to the
4505 \c CONFIG variable in the project file.
4506
4507 For example:
4508
4509 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 116
4510
4511 Use \c qmake as before to generate a Makefile and you will be able to
4512 obtain useful information about your application when running it in
4513 a debugging environment.
4514
4515 \section1 Adding Platform-Specific Source Files
4516
4517 After a few hours of coding, you might have made a start on the
4518 platform-specific part of your application, and decided to keep the
4519 platform-dependent code separate. So you now have two new files to
4520 include into your project file: \c hellowin.cpp and \c
4521 hellounix.cpp. We can't just add these to the \c SOURCES
4522 variable since this will put both files in the Makefile. So, what we
4523 need to do here is to use a scope which will be processed depending on
4524 which platform \c qmake is run on.
4525
4526 A simple scope that will add in the platform-dependent file for
4527 Windows looks like this:
4528
4529 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 117
4530
4531 So if \c qmake is run on Windows, it will add \c hellowin.cpp to the
4532 list of source files. If \c qmake is run on any other platform, it
4533 will simply ignore it. Now all that is left to be done is to create a
4534 scope for the Unix-specific file.
4535
4536 When you have done that, your project file should now look
4537 something like this:
4538
4539 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 118
4540
4541 Use \c qmake as before to generate a Makefile.
4542
4543 \section1 Stopping qmake If a File Doesn't Exist
4544
4545 You may not want to create a Makefile if a certain file doesn't exist.
4546 We can check if a file exists by using the exists() function. We can
4547 stop \c qmake from processing by using the error() function. This
4548 works in the same way as scopes do. Simply replace the scope condition
4549 with the function. A check for a \c main.cpp file looks like this:
4550
4551 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 119
4552
4553 The \c{!} symbol is used to negate the test; i.e. \c{exists( main.cpp )}
4554 is true if the file exists, and \c{!exists( main.cpp )} is true if the
4555 file doesn't exist.
4556
4557 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 120
4558
4559 Use \c qmake as before to generate a makefile. If you rename \c
4560 main.cpp temporarily, you will see the message and \c qmake will stop
4561 processing.
4562
4563 \section1 Checking for More than One Condition
4564
4565 Suppose you use Windows and you want to be able to see statement
4566 output with qDebug() when you run your application on the command line.
4567 Unless you build your application with the appropriate console setting,
4568 you won't see the output. We can easily put \c console on the \c CONFIG
4569 line so that on Windows the makefile will have this setting. However,
4570 let's say that we only want to add the \c CONFIG line if we are running
4571 on Windows \e and when \c debug is already on the \c CONFIG line.
4572 This requires using two nested scopes; just create one scope, then create
4573 the other inside it. Put the settings to be processed inside the last
4574 scope, like this:
4575
4576 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 121
4577
4578 Nested scopes can be joined together using colons, so the final
4579 project file looks like this:
4580
4581 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 122
4582
4583 That's it! You have now completed the tutorial for \c qmake, and are
4584 ready to write project files for your development projects.
4585*/
4586
4587/*!
4588 \page qmake-common-projects.html
4589 \title qmake Common Projects
4590 \contentspage {qmake Manual}{Contents}
4591 \previouspage qmake Tutorial
4592 \nextpage Using qmake
4593
4594 This chapter describes how to set up \c qmake project files for three
4595 common project types that are based on Qt. Although all kinds of
4596 projects use many of the same variables, each of them use project-specific
4597 variables to customize output files.
4598
4599 Platform-specific variables are not described here; we refer the reader to
4600 the \l{Deploying Qt Applications} document for information on issues such as
4601 \l{Deploying an Application on Mac OS X#Architecture Dependencies}{building
4602 universal binaries for Mac OS X} and
4603 \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
4604 {handling Visual Studio manifest files}.
4605
4606 \tableofcontents
4607
4608 \target Application
4609 \section1 Building an Application
4610
4611 \section2 The app Template
4612
4613 The \c app template tells \c qmake to generate a Makefile that will build
4614 an application. With this template, the type of application can be specified
4615 by adding one of the following options to the \c CONFIG variable definition:
4616
4617 \table
4618 \header \o Option \o Description
4619 \row \o windows \o The application is a Windows GUI application.
4620 \row \o console \o \c app template only: the application is a Windows console
4621 application.
4622 \endtable
4623
4624 When using this template the following \c qmake system variables are recognized.
4625 You should use these in your .pro file to specify information about your
4626 application.
4627
4628 \list
4629 \o HEADERS - A list of all the header files for the application.
4630 \o SOURCES - A list of all the source files for the application.
4631 \o FORMS - A list of all the UI files (created using \c{Qt Designer})
4632 for the application.
4633 \o LEXSOURCES - A list of all the lex source files for the application.
4634 \o YACCSOURCES - A list of all the yacc source files for the application.
4635 \o TARGET - Name of the executable for the application. This defaults
4636 to the name of the project file. (The extension, if any, is added
4637 automatically).
4638 \o DESTDIR - The directory in which the target executable is placed.
4639 \o DEFINES - A list of any additional pre-processor defines needed for the application.
4640 \o INCLUDEPATH - A list of any additional include paths needed for the application.
4641 \o DEPENDPATH - The dependency search path for the application.
4642 \o VPATH - The search path to find supplied files.
4643 \o DEF_FILE - Windows only: A .def file to be linked against for the application.
4644 \o RC_FILE - Windows only: A resource file for the application.
4645 \o RES_FILE - Windows only: A resource file to be linked against for the application.
4646 \endlist
4647
4648 You only need to use the system variables that you have values for,
4649 for instance, if you do not have any extra INCLUDEPATHs then you do not
4650 need to specify any, \c qmake will add in the default ones needed.
4651 For instance, an example project file might look like this:
4652
4653 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 123
4654
4655 For items that are single valued, e.g. the template or the destination
4656 directory, we use "="; but for multi-valued items we use "+=" to \e
4657 add to the existing items of that type. Using "=" replaces the item's
4658 value with the new value, for example if we wrote \c{DEFINES=QT_DLL},
4659 all other definitions would be deleted.
4660
4661 \target Library
4662 \section1 Building a Library
4663
4664 \section2 The lib Template
4665
4666 The \c lib template tells \c qmake to generate a Makefile that will
4667 build a library. When using this template, in addition to the system variables
4668 mentioned above for the \c app template the \c VERSION variable is
4669 supported. You should use these in your .pro file to specify
4670 information about the library.
4671
4672 When using the \c lib template, the following options can be added to the
4673 \c CONFIG variable to determine the type of library that is built:
4674
4675 \table
4676 \header \o Option \o Description
4677 \row \o dll \o The library is a shared library (dll).
4678 \row \o staticlib \o The library is a static library.
4679 \row \o plugin \o The library is a plugin; this also enables the dll option.
4680 \endtable
4681
4682 The following option can also be defined to provide additional information about
4683 the library.
4684
4685 \list
4686 \o VERSION - The version number of the target library, for example, 2.3.1.
4687 \endlist
4688
4689 The target file name for the library is platform-dependent. For example, on
4690 X11 and Mac OS X, the library name will be prefixed by \c lib; on Windows,
4691 no prefix is added to the file name.
4692
4693 \target Plugin
4694 \section1 Building a Plugin
4695
4696 Plugins are built using the \c lib template, as described in the previous
4697 section. This tells \c qmake to generate a Makefile for the project that will
4698 build a plugin in a suitable form for each platform, usually in the form of a
4699 library. As with ordinary libraries, the \c VERSION variable is used to specify
4700 information about the plugin.
4701
4702 \list
4703 \o VERSION - The version number of the target library, for example, 2.3.1.
4704 \endlist
4705
4706 \section2 Building a Qt Designer Plugin
4707
4708 \QD plugins are built using a specific set of configuration settings that
4709 depend on the way Qt was configured for your system. For convenience, these
4710 settings can be enabled by adding \c designer to the project's \c CONFIG
4711 variable. For example:
4712
4713 \snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
4714
4715 See the \l{Qt Designer Examples} for more examples of plugin-based projects.
4716
4717 \section1 Building and Installing in Debug and Release Modes
4718
4719 Sometimes, it is necessary to build a project in both debug and release
4720 modes. Although the \c CONFIG variable can hold both \c debug and \c release
4721 options, the \c debug option overrides the \c release option.
4722
4723 \section2 Building in Both Modes
4724
4725 To enable a project to be built in both modes, you must add the
4726 \c debug_and_release option to your project's \c CONFIG definition:
4727
4728 \snippet doc/src/snippets/qmake/debug_and_release.pro 0
4729 \snippet doc/src/snippets/qmake/debug_and_release.pro 1
4730
4731 The scope in the above snippet modifies the build target in each mode to
4732 ensure that the resulting targets have different names. Providing different
4733 names for targets ensures that one will not overwrite the other.
4734
4735 When \c qmake processes the project file, it will generate a Makefile rule
4736 to allow the project to be built in both modes. This can be invoked in the
4737 following way:
4738
4739 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 124
4740
4741 The \c build_all option can be added to the \c CONFIG variable in the
4742 project file to ensure that the project is built in both modes by default:
4743
4744 \snippet doc/src/snippets/qmake/debug_and_release.pro 2
4745
4746 This allows the Makefile to be processed using the default rule:
4747
4748 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 125
4749
4750 \section2 Installing in Both Modes
4751
4752 The \c build_all option also ensures that both versions of the target
4753 will be installed when the installation rule is invoked:
4754
4755 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 126
4756
4757 It is possible to customize the names of the build targets depending on
4758 the target platform. For example, a library or plugin may be named using a
4759 different convention on Windows to the one used on Unix platforms:
4760
4761 \omit
4762 Note: This was originally used in the customwidgetplugin.pro file, but is
4763 no longer needed there.
4764 \endomit
4765 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 127
4766
4767 The default behavior in the above snippet is to modify the name used for
4768 the build target when building in debug mode. An \c else clause could be
4769 added to the scope to do the same for release mode; left as it is, the
4770 target name remains unmodified.
4771*/
4772
Note: See TracBrowser for help on using the repository browser.