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

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

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 188.2 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 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 On the Symbian platform, you can use \c{DEPLOYMENT.installer_header}
1435 variable to generate smart installer wrapper for your application.
1436 If you specify just UID of the installer package as the value, then
1437 installer package name and version will be autogenerated:
1438
1439 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 146
1440
1441 If autogenerated values are not suitable, you can also specify the sis
1442 header yourself using this variable:
1443
1444 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 147
1445
1446 \target DEPLOYMENT_PLUGIN
1447 \section1 DEPLOYMENT_PLUGIN
1448
1449 \e {This is only used on Windows CE and the Symbian platform.}
1450
1451 This variable specifies the Qt plugins that will be deployed. All plugins
1452 available in Qt can be explicitly deployed to the device. See
1453 \l{Static Plugins}{Static Plugins} for a complete list.
1454
1455 \note In Windows CE, No plugins will be deployed automatically.
1456 If the application depends on plugins, these plugins have to be specified
1457 manually.
1458
1459 \note On the Symbian platform, all plugins supported by this variable
1460will be deployed by default with Qt libraries, so generally using this
1461variable is not needed.
1462
1463 For example:
1464
1465 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 142
1466
1467 This will upload the jpeg imageformat plugin to the plugins directory
1468 on the Windows CE device.
1469
1470 \target DESTDIR
1471 \section1 DESTDIR
1472
1473 Specifies where to put the \l{#TARGET}{target} file.
1474
1475 For example:
1476
1477 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 30
1478
1479 \target DESTDIR_TARGET
1480 \section1 DESTDIR_TARGET
1481
1482 This variable is set internally by \c qmake, which is basically the
1483 \c DESTDIR variable with the \c TARGET variable appened at the end.
1484 The value of this variable is typically handled by \c qmake or
1485 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1486
1487 \target DLLDESTDIR
1488 \section1 DLLDESTDIR
1489
1490 Specifies where to copy the \l{#TARGET}{target} dll.
1491
1492 \target DISTFILES
1493 \section1 DISTFILES
1494
1495 This variable contains a list of files to be included in the dist
1496 target. This feature is supported by UnixMake specs only.
1497
1498 For example:
1499
1500 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 31
1501
1502 \target DSP_TEMPLATE
1503 \section1 DSP_TEMPLATE
1504
1505 This variable is set internally by \c qmake, which specifies where the
1506 dsp template file for basing generated dsp files is stored. The value
1507 of this variable is typically handled by \c qmake or
1508 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1509
1510 \target FORMS
1511 \section1 FORMS
1512
1513 This variable specifies the UI files (see \link
1514 designer-manual.html Qt Designer \endlink) to be processed through \c uic
1515 before compiling. All dependencies, headers and source files required
1516 to build these UI files will automatically be added to the project.
1517
1518 For example:
1519
1520 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 32
1521
1522 If FORMS3 is defined in your project, then this variable must contain
1523 forms for uic, and not uic3. If CONFIG contains uic3, and FORMS3 is not
1524 defined, the this variable must contain only uic3 type forms.
1525
1526 \target FORMS3
1527 \section1 FORMS3
1528
1529 This variable specifies the old style UI files to be processed
1530 through \c uic3 before compiling, when \c CONFIG contains uic3.
1531 All dependencies, headers and source files required to build these
1532 UI files will automatically be added to the project.
1533
1534 For example:
1535
1536 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 33
1537
1538 \target GUID
1539 \section1 GUID
1540
1541 Specifies the GUID that is set inside a \c{.vcproj} file. The GUID is
1542 usually randomly determined. However, should you require a fixed GUID,
1543 it can be set using this variable.
1544
1545 This variable is specific to \c{.vcproj} files only; it is ignored
1546 otherwise.
1547
1548 \target HEADERS
1549 \section1 HEADERS
1550
1551 Defines the header files for the project.
1552
1553 \c qmake will generate dependency information (unless \c -nodepend
1554 is specified on the \l{Running qmake#Commands}{command line})
1555 for the specified headers. \c qmake will also automatically detect if
1556 \c moc is required by the classes in these headers, and add the
1557 appropriate dependencies and files to the project for generating and
1558 linking the moc files.
1559
1560 For example:
1561
1562 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 34
1563
1564 See also \l{#SOURCES}{SOURCES}.
1565
1566 \target ICON
1567 \section1 ICON
1568
1569 This variable is used only in MAC and the Symbian platform to set the application icon.
1570 Please see \l{Setting the Application Icon}{the application icon documentation}
1571 for more information.
1572
1573 \target INCLUDEPATH
1574 \section1 INCLUDEPATH
1575
1576 This variable specifies the #include directories which should be
1577 searched when compiling the project. Use ';' or a space as the
1578 directory separator.
1579
1580 For example:
1581
1582 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 35
1583
1584 To specify a path containing spaces, quote the path using the technique
1585 mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
1586 document. For example, paths with spaces can be specified on Windows
1587 and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
1588 function in the following way:
1589
1590 \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
1591
1592 \target INSTALLS
1593 \section1 INSTALLS
1594
1595 This variable contains a list of resources that will be installed when
1596 \c{make install} or a similar installation procedure is executed. Each
1597 item in the list is typically defined with attributes that provide
1598 information about where it will be installed.
1599
1600 For example, the following \c{target.path} definition describes where the
1601 build target will be installed, and the \c INSTALLS assignment adds the
1602 build target to the list of existing resources to be installed:
1603
1604 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 36
1605
1606 \target LEXIMPLS
1607 \section1 LEXIMPLS
1608
1609 This variable contains a list of lex implementation files. The value
1610 of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
1611 needs to be modified.
1612
1613 \target LEXOBJECTS
1614 \section1 LEXOBJECTS
1615
1616 This variable contains the names of intermediate lex object
1617 files.The value of this variable is typically handled by
1618 \c qmake and rarely needs to be modified.
1619
1620 \target LEXSOURCES
1621 \section1 LEXSOURCES
1622
1623 This variable contains a list of lex source files. All
1624 dependencies, headers and source files will automatically be added to
1625 the project for building these lex files.
1626
1627 For example:
1628
1629 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 37
1630
1631 \target LIBS
1632 \section1 LIBS
1633
1634 This variable contains a list of libraries to be linked into the project.
1635 You can use the Unix \c -l (library) and -L (library path) flags and qmake
1636 will do the correct thing with these libraries on Windows and the
1637 Symbian platform (namely this means passing the full path of the library to
1638 the linker). The only limitation to this is the library must exist, for
1639 qmake to find which directory a \c -l lib lives in.
1640
1641 For example:
1642
1643 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 38
1644
1645 To specify a path containing spaces, quote the path using the technique
1646 mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
1647 document. For example, paths with spaces can be specified on Windows
1648 and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
1649 function in the following way:
1650
1651 \snippet doc/src/snippets/qmake/spaces.pro quoting library paths with spaces
1652
1653 \bold{Note:} On Windows, specifying libraries with the \c{-l} option,
1654 as in the above example, will cause the library with the highest version
1655 number to be used; for example, \c{libmath2.lib} could potentially be used
1656 instead of \c{libmathlib}. To avoid this ambiguity, we recommend that you
1657 explicitly specify the library to be used by including the \c{.lib}
1658 file name suffix.
1659
1660 \bold{Note:} On the Symbian platform, the build system makes a
1661distinction between shared and
1662 static libraries. In most cases, qmake will figure out which library you
1663 are refering to, but in some cases you may have to specify it explicitly to
1664 get the expected behavior. This typically happens if you are building a
1665 library and using it in the same project. To specify that the library is
1666 either shared or static, add a ".dll" or ".lib" suffix, respectively, to the
1667 library name.
1668
1669 By default, the list of libraries stored in \c LIBS is reduced to a list of
1670 unique names before it is used. To change this behavior, add the
1671 \c no_lflags_merge option to the \c CONFIG variable:
1672
1673 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 39
1674
1675 \target LITERAL_HASH
1676 \section1 LITERAL_HASH
1677
1678 This variable is used whenever a literal hash character (\c{#}) is needed in
1679 a variable declaration, perhaps as part of a file name or in a string passed
1680 to some external application.
1681
1682 For example:
1683
1684 \snippet doc/src/snippets/qmake/comments.pro 1
1685
1686 By using \c LITERAL_HASH in this way, the \c # character can be used
1687 to construct a URL for the \c message() function to print to the console.
1688
1689 \target MAKEFILE
1690 \section1 MAKEFILE
1691
1692 This variable specifies the name of the Makefile which
1693 \c qmake should use when outputting the dependency information
1694 for building a project. The value of this variable is typically
1695 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1696
1697 \target MAKEFILE_GENERATOR
1698 \section1 MAKEFILE_GENERATOR
1699
1700 This variable contains the name of the Makefile generator to use
1701 when generating a Makefile. The value of this variable is typically
1702 handled internally by \c qmake and rarely needs to be modified.
1703
1704 \target MMP_RULES
1705 \section1 MMP_RULES
1706
1707 \e {This is only used on the Symbian platform.}
1708
1709 Generic MMP file content can be specified with this variable.
1710
1711 For example:
1712
1713 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 137
1714
1715 This will add the specified statement to the end of the generated MMP file.
1716
1717 It is also possible to add multiple rows in a single block. Each double
1718 quoted string will be placed on a new row in the generated MMP file.
1719
1720 For example:
1721
1722 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 138
1723
1724 If you need to include a hash (\c{#}) character inside the
1725 \c MMP_RULES statement, it can be done with the variable
1726 \c LITERAL_HASH as follows:
1727
1728 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 139
1729
1730 \note You should not use this variable to add MMP statements that are
1731 explicitly supported by their own variables, such as
1732 \c TARGET.EPOCSTACKSIZE.
1733 Doing so could result in duplicate statements in the MMP file.
1734
1735 \target MOC_DIR
1736 \section1 MOC_DIR
1737
1738 This variable specifies the directory where all intermediate moc
1739 files should be placed.
1740
1741 For example:
1742
1743 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 40
1744
1745 \target OBJECTS
1746 \section1 OBJECTS
1747
1748 This variable is generated from the \link #SOURCES SOURCES
1749 \endlink variable. The extension of each source file will have been
1750 replaced by .o (Unix) or .obj (Win32). The value of this variable is
1751 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1752 rarely needs to be modified.
1753
1754 \target OBJECTS_DIR
1755 \section1 OBJECTS_DIR
1756
1757 This variable specifies the directory where all intermediate
1758 objects should be placed.
1759
1760 For example:
1761
1762 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 41
1763
1764 \target OBJMOC
1765 \section1 OBJMOC
1766
1767 This variable is set by \c qmake if files can be found that
1768 contain the Q_OBJECT macro. \c OBJMOC contains the
1769 name of all intermediate moc object files. The value of this variable
1770 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1771 modified.
1772
1773 \target POST_TARGETDEPS
1774 \section1 POST_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 after all builtin (and \link #PRE_TARGETDEPS
1783 $$PRE_TARGETDEPS \endlink) dependencies.
1784
1785 \target PRE_TARGETDEPS
1786 \section1 PRE_TARGETDEPS
1787
1788 All libraries that the \l{#TARGET}{target} depends on can be
1789 listed in this variable. Some backends do not support this, these include
1790 MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
1791 internally by these build tools, this is useful for explicitly listing
1792 dependant static libraries.
1793
1794 This list will go before all builtin dependencies.
1795
1796 \target PRECOMPILED_HEADER
1797 \section1 PRECOMPILED_HEADER
1798
1799 This variable indicates the header file for creating a precompiled
1800 header file, to increase the compilation speed of a project.
1801 Precompiled headers are currently only supported on some platforms
1802 (Windows - all MSVC project types, Mac OS X - Xcode, Makefile,
1803 Unix - gcc 3.3 and up).
1804
1805 On other platforms, this variable has different meaning, as noted
1806 below.
1807
1808 This variable contains a list of header files that require some
1809 sort of pre-compilation step (such as with moc). The value of this
1810 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1811 modified.
1812
1813 \target PWD
1814 \section1 PWD
1815
1816 This variable contains the full path leading to the directory where
1817 the \c qmake project file (project.pro) is located.
1818
1819 \target OUT_PWD
1820 \section1 OUT_PWD
1821
1822 This variable contains the full path leading to the directory where
1823 \c qmake places the generated Makefile.
1824
1825 \target QMAKE_systemvariable
1826 \section1 QMAKE
1827
1828 This variable contains the name of the \c qmake program
1829 itself and is placed in generated Makefiles. The value of this
1830 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1831 modified.
1832
1833 \target QMAKESPEC_systemvariable
1834 \section1 QMAKESPEC
1835
1836 This variable contains the name of the \c qmake
1837 configuration to use when generating Makefiles. The value of this
1838 variable is typically handled by \c qmake and rarely needs to be modified.
1839
1840 Use the \c{QMAKESPEC} environment variable to override the \c qmake configuration.
1841 Note that, due to the way \c qmake reads project files, setting the \c{QMAKESPEC}
1842 environment variable from within a project file will have no effect.
1843
1844 \target QMAKE_APP_FLAG
1845 \section1 QMAKE_APP_FLAG
1846
1847 This variable is empty unless the \c app
1848 \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
1849 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1850 modified. Use the following instead:
1851
1852 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 42
1853
1854 \target QMAKE_APP_OR_DLL
1855 \section1 QMAKE_APP_OR_DLL
1856
1857 This variable is empty unless the \c app or \c dll
1858 \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
1859 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
1860 modified.
1861
1862 \target QMAKE_AR_CMD
1863 \section1 QMAKE_AR_CMD
1864
1865 \e {This is used on Unix platforms only.}
1866
1867 This variable contains the command for invoking the program which
1868 creates, modifies and extracts archives. The value of this variable is
1869 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1870 and rarely needs to be modified.
1871
1872 \target QMAKE_BUNDLE_DATA
1873 \section1 QMAKE_BUNDLE_DATA
1874
1875 This variable is used to hold the data that will be installed with a library
1876 bundle, and is often used to specify a collection of header files.
1877
1878 For example, the following lines add \c path/to/header_one.h
1879 and \c path/to/header_two.h to a group containing information about the
1880 headers supplied with the framework:
1881
1882 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 43
1883
1884 The last line adds the information about the headers to the collection of
1885 resources that will be installed with the library bundle.
1886
1887 Library bundles are created when the \c lib_bundle option is added to the
1888 \l{#CONFIG}{CONFIG} variable.
1889
1890 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
1891 more information about creating library bundles.
1892
1893 \e{This is used on Mac OS X only.}
1894
1895 \section1 QMAKE_BUNDLE_EXTENSION
1896
1897 This variable defines the extension to be used for library bundles.
1898 This allows frameworks to be created with custom extensions instead of the
1899 standard \c{.framework} directory name extension.
1900
1901 For example, the following definition will result in a framework with the
1902 \c{.myframework} extension:
1903
1904 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 44
1905
1906 \e{This is used on Mac OS X only.}
1907
1908 \section1 QMAKE_CC
1909
1910 This variable specifies the C compiler that will be used when building
1911 projects containing C source code. Only the file name of the compiler
1912 executable needs to be specified as long as it is on a path contained
1913 in the \c PATH variable when the Makefile is processed.
1914
1915 \target QMAKE_CFLAGS_DEBUG
1916 \section1 QMAKE_CFLAGS_DEBUG
1917
1918 This variable contains the flags for the C compiler in debug mode.The value of this variable is
1919 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1920 and rarely needs to be modified.
1921
1922 \target QMAKE_CFLAGS_MT
1923 \section1 QMAKE_CFLAGS_MT
1924
1925 This variable contains the compiler flags for creating a
1926 multi-threaded application or when the version of Qt that you link
1927 against is a multi-threaded statically linked library. The value of
1928 this variable is typically handled by \c qmake or
1929 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1930
1931 \target QMAKE_CFLAGS_MT_DBG
1932 \section1 QMAKE_CFLAGS_MT_DBG
1933
1934 This variable contains the compiler flags for creating a debuggable
1935 multi-threaded application or when the version of Qt that you link
1936 against is a debuggable multi-threaded statically linked library. The
1937 value of this variable is typically handled by \c qmake or
1938 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1939
1940 \target QMAKE_CFLAGS_MT_DLL
1941 \section1 QMAKE_CFLAGS_MT_DLL
1942
1943 \e {This is used on Windows only.}
1944
1945 This variable contains the compiler flags for creating a
1946 multi-threaded dll or when the version of Qt that you link
1947 against is a multi-threaded dll. The value of this variable is typically
1948 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1949 rarely needs to be modified.
1950
1951 \target QMAKE_CFLAGS_MT_DLLDBG
1952 \section1 QMAKE_CFLAGS_MT_DLLDBG
1953
1954 \e {This is used on Windows only.}
1955
1956 This variable contains the compiler flags for creating a debuggable
1957 multi-threaded dll or when the version of Qt that you link
1958 against is a debuggable multi-threaded statically linked library.
1959 The value of this variable is typically handled by \c qmake or
1960 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
1961
1962 \target QMAKE_CFLAGS_RELEASE
1963 \section1 QMAKE_CFLAGS_RELEASE
1964
1965 This variable contains the compiler flags for creating a non-debuggable
1966 application. The value of this variable is typically
1967 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
1968 rarely needs to be modified.
1969
1970 \target QMAKE_CFLAGS_SHLIB
1971 \section1 QMAKE_CFLAGS_SHLIB
1972
1973 \e {This is used on Unix platforms only.}
1974
1975 This variable contains the compiler flags for creating a shared
1976 library. The value of this variable is typically handled by
1977 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
1978 to be modified.
1979
1980 \target QMAKE_CFLAGS_THREAD
1981 \section1 QMAKE_CFLAGS_THREAD
1982
1983 This variable contains the compiler flags for creating a multi-threaded
1984 application. The value of this variable is typically handled by
1985 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
1986 to be modified.
1987
1988 \target QMAKE_CFLAGS_WARN_OFF
1989 \section1 QMAKE_CFLAGS_WARN_OFF
1990
1991 This variable is not empty if the warn_off
1992 \l{#TEMPLATE}{TEMPLATE} option is specified. The value of this
1993 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
1994 and rarely needs to be modified.
1995
1996 \target QMAKE_CFLAGS_WARN_ON
1997 \section1 QMAKE_CFLAGS_WARN_ON
1998
1999 This variable is not empty if the warn_on
2000 \l{#TEMPLATE}{TEMPLATE} option is specified.
2001 The value of this variable is typically handled by
2002 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2003 to be modified.
2004
2005 \target QMAKE_CLEAN
2006 \section1 QMAKE_CLEAN
2007
2008 This variable contains any files which are not generated files (such as moc and uic
2009 generated files) and object files that should be removed when using "make clean".
2010
2011 \section1 QMAKE_CXX
2012
2013 This variable specifies the C++ compiler that will be used when building
2014 projects containing C++ source code. Only the file name of the compiler
2015 executable needs to be specified as long as it is on a path contained
2016 in the \c PATH variable when the Makefile is processed.
2017
2018 \section1 QMAKE_CXXFLAGS
2019
2020 This variable contains the C++ compiler flags that are used when building
2021 a project. The value of this variable is typically handled by \c qmake or
2022 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. The flags
2023 specific to debug and release modes can be adjusted by modifying
2024 the \c QMAKE_CXXFLAGS_DEBUG and \c QMAKE_CXXFLAGS_RELEASE variables,
2025 respectively.
2026
2027 \bold{Note:} On the Symbian platform, this variable can be used to pass
2028architecture specific options to each compiler in the Symbian build system.
2029For example:
2030
2031 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
2032
2033 For more information, see
2034 \l{qmake Platform Notes#Compiler specific options}{qmake Platform Notes}.
2035
2036 \target QMAKE_CXXFLAGS_DEBUG
2037 \section1 QMAKE_CXXFLAGS_DEBUG
2038
2039 This variable contains the C++ compiler flags for creating a debuggable
2040 application. The value of this variable is typically handled by
2041 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2042 to be modified.
2043
2044 \target QMAKE_CXXFLAGS_MT
2045 \section1 QMAKE_CXXFLAGS_MT
2046
2047 This variable contains the C++ compiler flags for creating a multi-threaded
2048 application. The value of this variable is typically handled by
2049 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2050 to be modified.
2051
2052 \target QMAKE_CXXFLAGS_MT_DBG
2053 \section1 QMAKE_CXXFLAGS_MT_DBG
2054
2055 This variable contains the C++ compiler flags for creating a debuggable multi-threaded
2056 application. The value of this variable is typically handled by
2057 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2058 to be modified.
2059
2060 \target QMAKE_CXXFLAGS_MT_DLL
2061 \section1 QMAKE_CXXFLAGS_MT_DLL
2062
2063 \c {This is used on Windows only.}
2064
2065 This variable contains the C++ compiler flags for creating a multi-threaded
2066 dll. The value of this variable is typically handled by
2067 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2068 to be modified.
2069
2070 \target QMAKE_CXXFLAGS_MT_DLLDBG
2071 \section1 QMAKE_CXXFLAGS_MT_DLLDBG
2072
2073 \c {This is used on Windows only.}
2074
2075 This variable contains the C++ compiler flags for creating a multi-threaded debuggable
2076 dll. The value of this variable is typically handled by
2077 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2078 to be modified.
2079
2080 \target QMAKE_CXXFLAGS_RELEASE
2081 \section1 QMAKE_CXXFLAGS_RELEASE
2082
2083 This variable contains the C++ compiler flags for creating an
2084 application. The value of this variable is typically handled by
2085 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2086 to be modified.
2087
2088 \target QMAKE_CXXFLAGS_SHLIB
2089 \section1 QMAKE_CXXFLAGS_SHLIB
2090
2091 This variable contains the C++ compiler flags for creating a
2092 shared library. The value of this variable is typically handled by
2093 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2094 to be modified.
2095
2096 \target QMAKE_CXXFLAGS_THREAD
2097 \section1 QMAKE_CXXFLAGS_THREAD
2098
2099 This variable contains the C++ compiler flags for creating a
2100 multi-threaded application. The value of this variable is typically handled by
2101 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
2102 to be modified.
2103
2104 \target QMAKE_CXXFLAGS_WARN_OFF
2105 \section1 QMAKE_CXXFLAGS_WARN_OFF
2106
2107 This variable contains the C++ compiler flags for suppressing compiler warnings.
2108 The value of this variable is typically handled by \c qmake or
2109 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2110
2111 \target QMAKE_CXXFLAGS_WARN_ON
2112 \section1 QMAKE_CXXFLAGS_WARN_ON
2113
2114 This variable contains C++ compiler flags for generating compiler warnings.
2115 The value of this variable is typically handled by \c qmake or
2116 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2117
2118 \target QMAKE_DISTCLEAN
2119 \section1 QMAKE_DISTCLEAN
2120
2121 This variable removes extra files upon the invocation of \c{make distclean}.
2122
2123 \target QMAKE_EXTENSION_SHLIB
2124 \section1 QMAKE_EXTENSION_SHLIB
2125
2126 This variable contains the extention for shared libraries. The value of this
2127 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2128 and rarely needs to be modified.
2129
2130 Note that platform-specific variables that change the extension will override
2131 the contents of this variable.
2132
2133 \section1 QMAKE_EXT_MOC
2134
2135 This variable changes the extention used on included moc files.
2136
2137 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2138
2139 \section1 QMAKE_EXT_UI
2140
2141 This variable changes the extention used on /e Designer UI files.
2142
2143 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2144
2145 \section1 QMAKE_EXT_PRL
2146
2147 This variable changes the extention used on created PRL files.
2148
2149 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2150 \l{Configuring qmake's Environment#libdepend}{Library Dependencies}.
2151
2152 \section1 QMAKE_EXT_LEX
2153
2154 This variable changes the extention used on files given to lex.
2155
2156 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2157 \l{#LEXSOURCES}{LEXSOURCES}.
2158
2159 \section1 QMAKE_EXT_YACC
2160 This variable changes the extention used on files given to yacc.
2161
2162 See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
2163 \l{#YACCSOURCES}{YACCSOURCES}.
2164
2165 \section1 QMAKE_EXT_OBJ
2166
2167 This variable changes the extention used on generated object files.
2168
2169 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2170
2171 \section1 QMAKE_EXT_CPP
2172
2173 This variable changes the interpretation of all suffixes in this
2174 list of values as files of type C++ source code.
2175
2176 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2177
2178 \section1 QMAKE_EXT_H
2179
2180 This variable changes the interpretation of all suffixes in this
2181 list of values as files of type C header files.
2182
2183 See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
2184
2185 \section1 QMAKE_EXTRA_COMPILERS
2186
2187 This variable contains the extra compilers/preprocessors that have been added
2188
2189 See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
2190
2191 \section1 QMAKE_EXTRA_TARGETS
2192
2193 This variable contains the extra targets that have been added
2194
2195 See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
2196
2197 \target QMAKE_FAILED_REQUIREMENTS
2198 \section1 QMAKE_FAILED_REQUIREMENTS
2199
2200 This variable contains the list of requirements that were failed to be met when
2201 \c qmake was used. For example, the sql module is needed and wasn't compiled into Qt. The
2202 value of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2203 and rarely needs to be modified.
2204
2205 \target QMAKE_FILETAGS
2206 \section1 QMAKE_FILETAGS
2207
2208 This variable contains the file tags needed to be entered into the Makefile, such as SOURCES
2209 and HEADERS. The value of this variable is typically handled by \c qmake or
2210 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2211
2212 \section1 QMAKE_FRAMEWORK_BUNDLE_NAME
2213
2214 In a framework project, this variable contains the name to be used for the
2215 framework that is built.
2216
2217 By default, this variable contains the same value as the \l{#TARGET}{TARGET}
2218 variable.
2219
2220 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
2221 more information about creating frameworks and library bundles.
2222
2223 \e{This is used on Mac OS X only.}
2224
2225 \target QMAKE_FRAMEWORK_VERSION
2226 \section1 QMAKE_FRAMEWORK_VERSION
2227
2228 For projects where the build target is a Mac OS X framework, this variable
2229 is used to specify the version number that will be applied to the framework
2230 that is built.
2231
2232 By default, this variable contains the same value as the \l{#VERSION}{VERSION}
2233 variable.
2234
2235 See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
2236 more information about creating frameworks.
2237
2238 \e{This is used on Mac OS X only.}
2239
2240 \target QMAKE_INCDIR
2241 \section1 QMAKE_INCDIR
2242
2243 This variable contains the location of all known header files to be added to
2244 INCLUDEPATH when building an application. The value of this variable is
2245 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
2246 needs to be modified.
2247
2248 \target QMAKE_INCDIR_EGL
2249 \section1 QMAKE_INCDIR_EGL
2250
2251 This variable contains the location of EGL header files to be added
2252 to INCLUDEPATH when building an application with OpenGL/ES or
2253 OpenVG support. The value of this variable is typically handled by
2254 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2255
2256 \target QMAKE_INCDIR_OPENGL
2257 \section1 QMAKE_INCDIR_OPENGL
2258
2259 This variable contains the location of OpenGL header files to be added
2260 to INCLUDEPATH when building an application with OpenGL support. The
2261 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 \section1 QMAKE_INCDIR_OPENGL_ES1, QMAKE_INCDIR_OPENGL_ES1CL, QMAKE_INCDIR_OPENGL_ES2
2268
2269 These variables contain the location of OpenGL headers files to be added
2270 to INCLUDEPATH when building an application with OpenGL ES 1, OpenGL ES 1 Common
2271 Lite or OpenGL ES 2 support respectively.
2272
2273 The value of this variable is typically handled by \c qmake or
2274 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2275
2276 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2277 then QMAKE_INCDIR_EGL may also need to be set.
2278
2279 \target QMAKE_INCDIR_OPENVG
2280 \section1 QMAKE_INCDIR_OPENVG
2281
2282 This variable contains the location of OpenVG header files to be added
2283 to INCLUDEPATH when building an application with OpenVG support. The
2284 value of this variable is typically handled by \c qmake or
2285 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2286
2287 If the OpenVG implementation uses EGL then QMAKE_INCDIR_EGL may also
2288 need to be set.
2289
2290 \target QMAKE_INCDIR_QT
2291 \section1 QMAKE_INCDIR_QT
2292
2293 This variable contains the location of all known header file
2294 paths to be added to INCLUDEPATH when building a Qt application. The value
2295 of this variable is typically handled by \c qmake or
2296 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2297
2298 \target QMAKE_INCDIR_THREAD
2299 \section1 QMAKE_INCDIR_THREAD
2300
2301 This variable contains the location of all known header file
2302 paths to be added to INCLUDEPATH when building a multi-threaded application.
2303 The value of this variable is typically handled by \c qmake or
2304 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2305
2306 \target QMAKE_INCDIR_X11
2307 \section1 QMAKE_INCDIR_X11
2308
2309 \e {This is used on Unix platforms only.}
2310
2311 This variable contains the location of X11 header file paths to be
2312 added to INCLUDEPATH when building a X11 application. The
2313 value of this variable is typically handled by \c qmake or
2314 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2315
2316 \target QMAKE_INFO_PLIST
2317 \section1 QMAKE_INFO_PLIST
2318
2319 \e {This is used on Mac OS X platforms only.}
2320
2321 This variable contains the name of the property list file, \c{.plist}, you
2322 would like to include in your Mac OS X application bundle.
2323
2324 In the \c{.plist} file, you can define some variables, e.g., @EXECUTABLE@,
2325 which qmake will replace with the actual executable name. Other variables
2326 include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@.
2327
2328 \note Most of the time, the default \c{Info.plist} is good enough.
2329
2330 \section1 QMAKE_LFLAGS
2331
2332 This variable contains a general set of flags that are passed to
2333 the linker. If you need to change the flags used for a particular
2334 platform or type of project, use one of the specialized variables
2335 for that purpose instead of this variable.
2336
2337 \target QMAKE_LFLAGS_CONSOLE
2338 \section1 QMAKE_LFLAGS_CONSOLE
2339
2340 \e {This is used on Windows only.}
2341
2342 This variable contains link flags when building console
2343 programs. The value of this variable is typically handled by
2344 \c qmake or
2345 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2346
2347 \section1 QMAKE_LFLAGS_CONSOLE_DLL
2348
2349 \e {This is used on Windows only.}
2350
2351 This variable contains link flags when building console
2352 dlls. The value of this variable is typically handled by
2353 \c qmake or
2354 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2355
2356 \section1 QMAKE_LFLAGS_DEBUG
2357
2358 This variable contains link flags when building debuggable applications. The
2359 value of this variable is typically handled by \c qmake or
2360 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2361
2362 \section1 QMAKE_LFLAGS_PLUGIN
2363
2364 This variable contains link flags when building plugins. The value
2365 of this variable is typically handled by \c qmake or
2366 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2367
2368 \section1 QMAKE_LFLAGS_RPATH
2369
2370 \e {This is used on Unix platforms only.}
2371
2372 Library paths in this definition are added to the executable at link
2373 time so that the added paths will be preferentially searched at runtime.
2374
2375 \section1 QMAKE_LFLAGS_QT_DLL
2376
2377 This variable contains link flags when building programs that
2378 use the Qt library built as a dll. The value of this variable is
2379 typically handled by \c qmake or
2380 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2381
2382 \section1 QMAKE_LFLAGS_RELEASE
2383
2384 This variable contains link flags when building applications for
2385 release. The value of this variable is typically handled by
2386 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2387
2388 \section1 QMAKE_LFLAGS_SHAPP
2389
2390 This variable contains link flags when building applications which are using
2391 the \c app template. The value of this variable is typically handled by
2392 \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2393
2394 \section1 QMAKE_LFLAGS_SHLIB
2395
2396 This variable contains link flags when building shared libraries
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_SONAME
2401
2402 This variable specifies the link flags to set the name of shared objects,
2403 such as .so or .dll. The value of this variable is typically handled by \c
2404 qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2405
2406 \section1 QMAKE_LFLAGS_THREAD
2407
2408 This variable contains link flags when building multi-threaded projects.
2409 The value of this variable is typically handled by \c qmake or
2410 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2411
2412 \section1 QMAKE_LFLAGS_WINDOWS
2413
2414 \e {This is used on Windows only.}
2415
2416 This variable contains link flags when building Windows GUI projects
2417 (i.e. non-console applications).
2418 The value of this variable is typically handled by \c qmake or
2419 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2420
2421 \section1 QMAKE_LFLAGS_WINDOWS_DLL
2422
2423 \e {This is used on Windows only.}
2424
2425 This variable contains link flags when building Windows DLL projects.
2426 The value of this variable is typically handled by \c qmake or
2427 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2428
2429 \section1 QMAKE_LIBDIR
2430
2431 This variable contains the location of all known library
2432 directories.The value of this variable is typically handled by
2433 \c qmake or
2434 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2435
2436 \section1 QMAKE_LIBDIR_FLAGS
2437
2438 \e {This is used on Unix platforms only.}
2439
2440 This variable contains the location of all library
2441 directory with -L prefixed. The value of this variable is typically handled by
2442 \c qmake or
2443 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2444
2445 \section1 QMAKE_LIBDIR_EGL
2446
2447 This variable contains the location of the EGL library
2448 directory, when EGL is used with OpenGL/ES or OpenVG. The value
2449 of this variable is typically handled by \c qmake or
2450 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2451
2452 \section1 QMAKE_LIBDIR_OPENGL
2453
2454 This variable contains the location of the OpenGL library
2455 directory.The value of this variable is typically handled by
2456 \c qmake or
2457 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2458
2459 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2460 then QMAKE_LIBDIR_EGL may also need to be set.
2461
2462 \section1 QMAKE_LIBDIR_OPENVG
2463
2464 This variable contains the location of the OpenVG library
2465 directory. The value of this variable is typically handled by
2466 \c qmake or
2467 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2468
2469 If the OpenVG implementation uses EGL, then QMAKE_LIBDIR_EGL
2470 may also need to be set.
2471
2472 \section1 QMAKE_LIBDIR_QT
2473
2474 This variable contains the location of the Qt library
2475 directory.The value of this variable is typically handled by
2476 \c qmake or
2477 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2478
2479 \section1 QMAKE_LIBDIR_X11
2480
2481 \e {This is used on Unix platforms only.}
2482
2483 This variable contains the location of the X11 library
2484 directory.The value of this variable is typically handled by
2485 \c qmake or
2486 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2487
2488 \section1 QMAKE_LIBS
2489
2490 This variable contains all project libraries. The value of this
2491 variable is typically handled by \c qmake or
2492 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2493
2494 \section1 QMAKE_LIBS_CONSOLE
2495
2496 \e {This Windows-specific variable is no longer used.}
2497
2498 Prior to Qt 4.2, this variable was used to list the libraries
2499 that should be linked against when building a console application
2500 project on Windows. \l{#QMAKE_LIBS_WINDOW}{QMAKE_LIBS_WINDOW}
2501 should now be used instead.
2502
2503 \section1 QMAKE_LIBS_EGL
2504
2505 This variable contains all EGL libraries when building Qt with
2506 OpenGL/ES or OpenVG. The value of this variable is typically
2507 handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
2508 needs to be modified. The usual value is \c{-lEGL}.
2509
2510 \section1 QMAKE_LIBS_OPENGL
2511
2512 This variable contains all OpenGL libraries. The value of this
2513 variable is typically handled by \c qmake or
2514 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2515
2516 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2517 then QMAKE_LIBS_EGL may also need to be set.
2518
2519 \section1 QMAKE_LIBS_OPENGL_QT
2520
2521 This variable contains all OpenGL Qt libraries.The value of this
2522 variable is typically handled by \c qmake or
2523 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2524
2525 \section1 QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL, QMAKE_LIBS_OPENGL_ES2
2526
2527 These variables contain all the OpenGL libraries for OpenGL ES 1,
2528 OpenGL ES 1 Common Lite profile and OpenGL ES 2.
2529
2530 The value of these variables is typically handled by \c qmake or
2531 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2532
2533 If the OpenGL implementation uses EGL (most OpenGL/ES systems),
2534 then QMAKE_LIBS_EGL may also need to be set.
2535
2536 \section1 QMAKE_LIBS_OPENVG
2537
2538 This variable contains all OpenVG libraries. The value of this
2539 variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
2540 and rarely needs to be modified. The usual value is \c{-lOpenVG}.
2541
2542 Some OpenVG engines are implemented on top of OpenGL. This will
2543 be detected at configure time and QMAKE_LIBS_OPENGL will be implicitly
2544 added to QMAKE_LIBS_OPENVG wherever the OpenVG libraries are linked.
2545
2546 If the OpenVG implementation uses EGL, then QMAKE_LIBS_EGL may also
2547 need to be set.
2548
2549 \section1 QMAKE_LIBS_QT
2550
2551 This variable contains all Qt libraries.The value of this
2552 variable is typically handled by \c qmake or
2553 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2554
2555 \section1 QMAKE_LIBS_QT_DLL
2556
2557 \e {This is used on Windows only.}
2558
2559 This variable contains all Qt libraries when Qt is built as a dll. The
2560 value of this variable is typically handled by \c qmake or
2561 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2562
2563 \section1 QMAKE_LIBS_QT_OPENGL
2564
2565 This variable contains all the libraries needed to link against if
2566 OpenGL support is turned on. The
2567 value of this variable is typically handled by \c qmake or
2568 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2569
2570 \section1 QMAKE_LIBS_QT_THREAD
2571
2572 This variable contains all the libraries needed to link against if
2573 thread support is turned on. The
2574 value of this variable is typically handled by \c qmake or
2575 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2576
2577 \section1 QMAKE_LIBS_RT
2578
2579 \e {This is used with Borland compilers only.}
2580
2581 This variable contains the runtime library needed to link against when
2582 building an application. The
2583 value of this variable is typically handled by \c qmake or
2584 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2585
2586 \section1 QMAKE_LIBS_RTMT
2587
2588 \e {This is used with Borland compilers only.}
2589
2590 This variable contains the runtime library needed to link against when
2591 building a multi-threaded application. The
2592 value of this variable is typically handled by \c qmake or
2593 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2594
2595 \section1 QMAKE_LIBS_THREAD
2596
2597 \e {This is used on Unix platforms only.}
2598
2599 This variable contains all libraries that need to be linked against
2600 when building a multi-threaded application. The
2601 value of this variable is typically handled by \c qmake or
2602 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2603
2604 \section1 QMAKE_LIBS_WINDOWS
2605
2606 \e {This is used on Windows only.}
2607
2608 This variable contains all windows libraries.The value of this
2609 variable is typically handled by \c qmake or
2610 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2611
2612 \section1 QMAKE_LIBS_X11
2613
2614 \e {This is used on Unix platforms only.}
2615
2616 This variable contains all X11 libraries.The value of this
2617 variable is typically handled by \c qmake or
2618 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2619
2620 \section1 QMAKE_LIBS_X11SM
2621
2622 \e {This is used on Unix platforms only.}
2623
2624 This variable contains all X11 session management libraries. The
2625 value of this variable is typically handled by \c qmake or
2626 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2627
2628 \section1 QMAKE_LIB_FLAG
2629
2630 This variable is not empty if the \c lib template is specified. The
2631 value of this variable is typically handled by \c qmake or
2632 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2633
2634 \section1 QMAKE_LINK_SHLIB_CMD
2635
2636 This variable contains the command to execute when creating a
2637 shared library. The
2638 value of this variable is typically handled by \c qmake or
2639 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2640
2641 \section1 QMAKE_POST_LINK
2642
2643 This variable contains the command to execute after linking the TARGET
2644 together. This variable is normally empty and therefore nothing is
2645 executed, additionally some backends will not support this - mostly only
2646 Makefile backends.
2647
2648 \section1 QMAKE_PRE_LINK
2649
2650 This variable contains the command to execute before linking the TARGET
2651 together. This variable is normally empty and therefore nothing is
2652 executed, additionally some backends will not support this - mostly only
2653 Makefile backends.
2654
2655 \section1 QMAKE_LN_SHLIB
2656
2657 This variable contains the command to execute when creating a link
2658 to a shared library. The
2659 value of this variable is typically handled by \c qmake or
2660 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2661
2662 \section1 QMAKE_MAC_SDK
2663
2664 This variable is used on Mac OS X when building universal binaries.
2665 This process is described in more detail in the
2666 \l{Deploying an Application on Mac OS X#Architecture Dependencies}{Deploying
2667 an Application on Mac OS X} document.
2668
2669 \section1 QMAKE_MACOSX_DEPLOYMENT_TARGET
2670 This variable only has an effect when building on Mac OS X. On that
2671 platform, the variable will be forwarded to the MACOSX_DEPLOYMENT_TARGET
2672 environment variable, which is interpreted by the compiler or linker.
2673 For more information, see the
2674 \l{Deploying an Application on Mac OS X#Mac OS X Version Dependencies}{Deploying
2675 an Application on Mac OS X} document.
2676
2677 \section1 QMAKE_MAKEFILE
2678
2679 This variable contains the name of the Makefile to create. The
2680 value of this variable is typically handled by \c qmake or
2681 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2682
2683 \section1 QMAKE_MOC_SRC
2684
2685 This variable contains the names of all moc source files to
2686 generate and include in the project. The value of this variable is
2687 typically handled by \c qmake or
2688 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2689
2690 \section1 QMAKE_QMAKE
2691
2692 This variable contains the location of qmake if it is not in the path.
2693 The value of this variable is typically handled by \c qmake or
2694 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2695
2696 \section1 QMAKE_QT_DLL
2697
2698 This variable is not empty if Qt was built as a dll. The
2699 value of this variable is typically handled by \c qmake or
2700 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2701
2702 \section1 QMAKE_RESOURCE_FLAGS
2703
2704 This variable is used to customize the list of options passed to the
2705 \l{rcc}{Resource Compiler} in each of the build rules where it is used.
2706 For example, the following line ensures that the \c{-threshold} and
2707 \c{-compress} options are used with particular values each time that
2708 \c rcc is invoked:
2709
2710 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 45
2711
2712 \section1 QMAKE_RPATH
2713
2714 \e {This is used on Unix platforms only.}
2715
2716 Is equivalent to \l QMAKE_LFLAGS_RPATH.
2717
2718 \section1 QMAKE_RPATHDIR
2719
2720 \e {This is used on Unix platforms only.}
2721
2722 A list of library directory paths, these paths are added to the
2723 executable at link time so that the paths will be preferentially
2724 searched at runtime.
2725
2726 \section1 QMAKE_RUN_CC
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_CC_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_RUN_CXX
2739
2740 This variable specifies the individual rule needed to build an object.
2741 The value of this variable is typically handled by \c qmake or
2742 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2743
2744 \section1 QMAKE_RUN_CXX_IMP
2745
2746 This variable specifies the individual rule needed to build an object.
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 \section1 QMAKE_TARGET
2751
2752 This variable contains the name of the project target. The value of
2753 this variable is typically handled by \c qmake or
2754 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2755
2756 \section1 QMAKE_UIC
2757
2758 This variable contains the location of uic if it is not in the path.
2759 The value of this variable is typically handled by \c qmake or
2760 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2761
2762 It can be used to specify arguments to uic as well, such as additional plugin
2763 paths. For example:
2764
2765 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 46
2766
2767 \section1 QT
2768
2769 The values stored in the \c QT variable control which of the Qt modules are
2770 used by your project.
2771
2772 The table below shows the options that can be used with the \c QT variable
2773 and the features that are associated with each of them:
2774
2775 \table
2776 \header \o Option \o Features
2777 \row \o core (included by default) \o QtCore module
2778 \row \o gui (included by default) \o QtGui module
2779 \row \o network \o QtNetwork module
2780 \row \o opengl \o QtOpenGL module
2781 \row \o phonon \o Phonon Multimedia Framework
2782 \row \o sql \o QtSql module
2783 \row \o svg \o QtSvg module
2784 \row \o xml \o QtXml module
2785 \row \o webkit \o WebKit integration
2786 \row \o qt3support \o Qt3Support module
2787 \endtable
2788
2789 By default, \c QT contains both \c core and \c gui, ensuring that standard
2790 GUI applications can be built without further configuration.
2791
2792 If you want to build a project \e without the QtGui module, you need to
2793 exclude the \c gui value with the "-=" operator; the following line will
2794 result in a minimal Qt project being built:
2795
2796 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 47
2797
2798 Note that adding the \c opengl option to the \c QT variable automatically
2799 causes the equivalent option to be added to the \c CONFIG variable.
2800 Therefore, for Qt applications, it is not necessary to add the \c opengl
2801 option to both \c CONFIG and \c{QT}.
2802
2803 \section1 QTPLUGIN
2804
2805 This variable contains a list of names of static plugins that are to be
2806 compiled with an application so that they are available as built-in
2807 resources.
2808
2809 \target QT_VERSION
2810 \section1 QT_VERSION
2811
2812 This variable contains the current version of Qt.
2813
2814 \target QT_MAJOR_VERSION
2815 \section1 QT_MAJOR_VERSION
2816
2817 This variable contains the current major version of Qt.
2818
2819 \target QT_MINOR_VERSION
2820 \section1 QT_MINOR_VERSION
2821
2822 This variable contains the current minor version of Qt.
2823
2824 \target QT_PATCH_VERSION
2825 \section1 QT_PATCH_VERSION
2826
2827 This variable contains the current patch version of Qt.
2828
2829 \section1 RC_FILE
2830
2831 This variable contains the name of the resource file for the application.
2832 The value of this variable is typically handled by \c qmake or
2833 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2834
2835 \target RCC_DIR
2836 \section1 RCC_DIR
2837
2838 This variable specifies the directory where all intermediate
2839 resource files should be placed.
2840
2841 For example:
2842
2843 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 48
2844
2845 \target REQUIRES
2846 \section1 REQUIRES
2847
2848 This is a special variable processed by \c qmake. If the
2849 contents of this variable do not appear in CONFIG by the time this
2850 variable is assigned, then a minimal Makefile will be generated that
2851 states what dependencies (the values assigned to REQUIRES) are
2852 missing.
2853
2854 This is mainly used in Qt's build system for building the examples.
2855
2856 \section1 RESOURCES
2857
2858 This variable contains the name of the resource collection file (qrc)
2859 for the application. Further information about the resource collection
2860 file can be found at \l{The Qt Resource System}.
2861
2862 \section1 RES_FILE
2863
2864 This variable contains the name of the resource file for the application.
2865 The value of this variable is typically handled by \c qmake or
2866 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
2867
2868 \target RSS_RULES
2869 \section1 RSS_RULES
2870
2871 \e {This is only used on the Symbian platform.}
2872
2873 Generic RSS file content can be specified with this variable. The syntax is
2874 similar to \c MMP_RULES and \c BLD_INF_RULES.
2875
2876 For example:
2877
2878 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 144
2879
2880 This will add the specified statement to the end of the generated
2881 registration resource file. As an impact of this statement, the application
2882 will not be visible in application shell.
2883
2884 It is also possible to add multiple rows in a single block. Each double
2885 quoted string will be placed on a new row in the registration resource file.
2886
2887 For example:
2888
2889 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 145
2890
2891 This example will install the application to MyFolder in the Symbian
2892 platform application shell. In addition it will make the application to
2893 be launched in background.
2894
2895 For detailed list of possible RSS statements, please refer to the
2896 Symbian platform help.
2897
2898 \note You should not use \c RSS_RULES variable to set the following RSS statements:
2899
2900 app_file
2901 localisable_resource_file
2902 localisable_resource_id
2903
2904 These statements are internally handled by qmake.
2905
2906 \target S60_VERSION
2907 \section1 S60_VERSION
2908
2909 \e {This is only used on the Symbian platform.}
2910
2911 Contains the version number of the underlying S60 SDK; e.g. "5.0".
2912
2913 \target SIGNATURE_FILE
2914 \section1 SIGNATURE_FILE
2915
2916 \e {This is only used on Windows CE.}
2917
2918 Specifies which signature file should be used to sign the project target.
2919
2920 \note This variable will overwrite the setting you have specified in configure,
2921 with the \c -signature option.
2922
2923 \target SOURCES
2924 \section1 SOURCES
2925
2926 This variable contains the name of all source files in the project.
2927
2928 For example:
2929
2930 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 49
2931
2932 See also \l{#HEADERS}{HEADERS}
2933
2934 \section1 SRCMOC
2935
2936 This variable is set by \c qmake if files can be found that
2937 contain the Q_OBJECT macro. \c SRCMOC contains the
2938 name of all the generated moc files. The value of this variable
2939 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
2940 modified.
2941
2942 \target SUBDIRS
2943 \section1 SUBDIRS
2944
2945 This variable, when used with the \l{#TEMPLATE}{\c subdirs template}
2946 contains the names of all subdirectories that contain parts of the project
2947 that need be built. Each subdirectory must contain its own project file.
2948
2949 For example:
2950
2951 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 50
2952
2953 It is essential that the project file in each subdirectory has the same
2954 name as the subdirectory itself, so that \c qmake can find it.
2955 For example, if the subdirectory is called \c myapp then the project file
2956 in that directory should be called \c myapp.pro.
2957
2958 If you need to ensure that the subdirectories are built in the order in
2959 which they are specified, update the \l{#CONFIG}{CONFIG} variable to
2960 include the \c ordered option:
2961
2962 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 51
2963
2964 \target TARGET
2965 \section1 TARGET
2966
2967 This specifies the name of the target file.
2968
2969 For example:
2970
2971 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 52
2972
2973 The project file above would produce an executable named \c myapp on
2974 unix and 'myapp.exe' on windows.
2975
2976 \target TARGET.CAPABILITY
2977 \section1 TARGET.CAPABILITY
2978
2979 \e {This is only used on the Symbian platform.}
2980
2981 Specifies which platform capabilities the application should have. For more
2982 information, please refer to the Symbian SDK documentation.
2983
2984 \target TARGET.EPOCALLOWDLLDATA
2985 \section1 TARGET.EPOCALLOWDLLDATA
2986
2987 \e {This is only used on the Symbian platform.}
2988
2989 Specifies whether static data should be allowed in the application. Symbian
2990 disallows this by default in order to save memory. To use it, set this to 1.
2991
2992 \target TARGET.EPOCHEAPSIZE
2993 \section1 TARGET.EPOCHEAPSIZE
2994
2995 \e {This is only used on the Symbian platform.}
2996
2997 Specifies the minimum and maximum heap size of the application. The program
2998 will refuse to run if the minimum size is not available when it starts. For
2999 example:
3000
3001 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 135
3002
3003 \target TARGET.EPOCSTACKSIZE
3004 \section1 TARGET.EPOCSTACKSIZE
3005
3006 \e {This is only used on the Symbian platform.}
3007
3008 Specifies the maximum stack size of the application. For example:
3009
3010 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 136
3011
3012 \target TARGET.SID
3013 \section1 TARGET.SID
3014
3015 \e {This is only used on the Symbian platform.}
3016
3017 Specifies which secure identifier to use for the target application or
3018 library. For more information, see the Symbian SDK documentation.
3019
3020 \target TARGET.UID2
3021 \section1 TARGET.UID2
3022
3023 \e {This is only used on the Symbian platform.}
3024
3025 Specifies which unique identifier 2 to use for the target application or
3026 library. If this variable is not specified, it defaults to the same value
3027 as TARGET.UID3. For more information, see the Symbian SDK documentation.
3028
3029 \target TARGET.UID3
3030 \section1 TARGET.UID3
3031
3032 \e {This is only used on the Symbian platform.}
3033
3034 Specifies which unique identifier 3 to use for the target application or
3035 library. If this variable is not specified, a UID3 suitable for development
3036 and debugging will be generated automatically. However, applications being
3037 released should always define this variable. For more information, see the
3038 Symbian SDK documentation.
3039
3040 \target TARGET.VID
3041 \section1 TARGET.VID
3042
3043 \e {This is only used on the Symbian platform.}
3044
3045 Specifies which vendor identifier to use for the target application or
3046 library. For more information, see the Symbian SDK documentation.
3047
3048 \section1 TARGET_EXT
3049
3050 This variable specifies the target's extension. 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 \section1 TARGET_x
3055
3056 This variable specifies the target's extension with a major version number. The value of this variable
3057 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3058 modified.
3059
3060 \section1 TARGET_x.y.z
3061
3062 This variable specifies the target's extension with version number. The value of this variable
3063 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3064 modified.
3065
3066 \target TEMPLATE
3067 \section1 TEMPLATE
3068
3069 This variable contains the name of the template to use when
3070 generating the project. The allowed values are:
3071
3072 \table
3073 \header \o Option \o Description
3074 \row \o app \o Creates a Makefile for building applications (the default). (See
3075 \l{qmake Common Projects#Application}{qmake Common Projects} for more information.)
3076 \row \o lib \o Creates a Makefile for building libraries. (See
3077 \l{qmake Common Projects#Library}{qmake Common Projects} for more information.)
3078 \row \o subdirs \o Creates a Makefile for building targets in subdirectories.
3079 The subdirectories are specified using the \l{#SUBDIRS}{SUBDIRS}
3080 variable.
3081 \row \o vcapp \o \e {Windows only} Creates an application project for Visual Studio.
3082 (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
3083 for more information.)
3084 \row \o vclib \o \e {Windows only} Creates a library project for Visual Studio.
3085 (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
3086 for more information.)
3087 \endtable
3088
3089 For example:
3090
3091 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 53
3092
3093 The template can be overridden by specifying a new template type with the
3094 \c -t command line option. This overrides the template type \e after the .pro
3095 file has been processed. With .pro files that use the template type to
3096 determine how the project is built, it is necessary to declare TEMPLATE on
3097 the command line rather than use the \c -t option.
3098
3099 \section1 TRANSLATIONS
3100
3101 This variable contains a list of translation (.ts) files that contain
3102 translations of the user interface text into non-native languages.
3103
3104 See the \l{Qt Linguist Manual} for more information about
3105 internationalization (i18n) and localization (l10n) with Qt.
3106
3107 \section1 UICIMPLS
3108
3109 This variable contains a list of the generated implementation files by UIC.
3110 The value of this variable
3111 is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
3112 modified.
3113
3114 \section1 UICOBJECTS
3115
3116 This variable is generated from the UICIMPLS variable. The extension of each
3117 file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is
3118 typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
3119 rarely needs to be modified.
3120
3121 \target UI_DIR
3122 \section1 UI_DIR
3123
3124 This variable specifies the directory where all intermediate files from uic
3125 should be placed. This variable overrides both UI_SOURCES_DIR and
3126 UI_HEADERS_DIR.
3127
3128 For example:
3129
3130 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 54
3131
3132 \target UI_HEADERS_DIR
3133 \section1 UI_HEADERS_DIR
3134
3135 This variable specifies the directory where all declaration files (as
3136 generated by uic) should be placed.
3137
3138 For example:
3139
3140 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 55
3141
3142 \target UI_SOURCES_DIR
3143 \section1 UI_SOURCES_DIR
3144
3145 This variable specifies the directory where all implementation files (as generated
3146 by uic) should be placed.
3147
3148 For example:
3149
3150 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 56
3151
3152 \target VERSION
3153 \section1 VERSION
3154
3155 This variable contains the version number of the application or library if
3156 either the \c app \l{#TEMPLATE}{TEMPLATE} or the \c lib \l{#TEMPLATE}{TEMPLATE}
3157 is specified.
3158
3159 For example:
3160
3161 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 57
3162
3163 \section1 VER_MAJ
3164
3165 This variable contains the major version number of the library, if the
3166 \c lib \l{#TEMPLATE}{template} is specified.
3167
3168 \section1 VER_MIN
3169
3170 This variable contains the minor version number of the library, if the
3171 \c lib \l{#TEMPLATE}{template} is specified.
3172
3173 \section1 VER_PAT
3174
3175 This variable contains the patch version number of the library, if the
3176 \c lib \l{#TEMPLATE}{template} is specified.
3177
3178 \section1 VPATH
3179
3180 This variable tells \c qmake where to search for files it cannot
3181 open. With this you may tell \c qmake where it may look for things
3182 like SOURCES, and if it finds an entry in SOURCES that cannot be
3183 opened it will look through the entire VPATH list to see if it can
3184 find the file on its own.
3185
3186 See also \l{#DEPENDPATH}{DEPENDPATH}.
3187
3188 \section1 YACCIMPLS
3189
3190 This variable contains a list of yacc source files. The value of
3191 this variable is typically handled by \c qmake or
3192 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
3193
3194 \section1 YACCOBJECTS
3195
3196 This variable contains a list of yacc object files. The value of
3197 this variable is typically handled by \c qmake or
3198 \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
3199
3200 \target YACCSOURCES
3201 \section1 YACCSOURCES
3202
3203 This variable contains a list of yacc source files to be included
3204 in the project. All dependencies, headers and source files will
3205 automatically be included in the project.
3206
3207 For example:
3208
3209 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 58
3210
3211 \section1 _PRO_FILE_
3212
3213 This variable contains the path to the project file in use.
3214
3215 For example, the following line causes the location of the project
3216 file to be written to the console:
3217
3218 \snippet doc/src/snippets/qmake/project_location.pro project file
3219
3220 \section1 _PRO_FILE_PWD_
3221
3222 This variable contains the path to the directory containing the project
3223 file in use.
3224
3225 For example, the following line causes the location of the directory
3226 containing the project file to be written to the console:
3227
3228 \snippet doc/src/snippets/qmake/project_location.pro project file directory
3229*/
3230
3231/*!
3232 \page qmake-function-reference.html
3233 \title qmake Function Reference
3234 \contentspage {qmake Manual}{Contents}
3235 \previouspage qmake Variable Reference
3236 \nextpage Configuring qmake's Environment
3237
3238 \c qmake provides built-in functions to allow the contents of
3239 variables to be processed, and to enable tests to be performed
3240 during the configuration process. Functions that process the
3241 contents of variables typically return values that can be assigned
3242 to other variables, and these values are obtained by prefixing
3243 function with the \c $$ operator. Functions that perform tests
3244 are usually used as the conditional parts of scopes; these are
3245 indicated in the function descriptions below.
3246
3247 \tableofcontents{2}
3248
3249 \section1 basename(variablename)
3250
3251 Returns the basename of the file specified. For example:
3252
3253 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 59
3254
3255 \section1 CONFIG(config)
3256 [Conditional]
3257
3258 This function can be used to test for variables placed into the
3259 \c CONFIG variable. This is the same as regular old style (tmake) scopes,
3260 but has the added advantage a second parameter can be passed to test for
3261 the active config. As the order of values is important in \c CONFIG
3262 variables (i.e. the last one set will be considered the active config for
3263 mutually exclusive values) a second parameter can be used to specify a set
3264 of values to consider. For example:
3265
3266 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 60
3267
3268 Because release is considered the active setting (for feature parsing)
3269 it will be the CONFIG used to generate the build file. In the common
3270 case a second parameter is not needed, but for specific mutual
3271 exclusive tests it is invaluable.
3272
3273 \section1 contains(variablename, value)
3274 [Conditional]
3275
3276 Succeeds if the variable \e variablename contains the value \e value;
3277 otherwise fails. You can check the return value of this function using
3278 a scope.
3279
3280 For example:
3281
3282 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 61
3283
3284 The contents of the scope are only processed if the \c drivers
3285 variable contains the value, \c network. If this is the case, the
3286 appropriate files are added to the \c SOURCES and \c HEADERS
3287 variables.
3288
3289 \section1 count(variablename, number)
3290 [Conditional]
3291
3292 Succeeds if the variable \e variablename contains a list with the
3293 specified \e number of value; otherwise fails.
3294
3295 This function is used to ensure that declarations inside a scope are
3296 only processed if the variable contains the correct number of values;
3297 for example:
3298
3299 \snippet doc/src/snippets/qmake/functions.pro 2
3300
3301 \section1 dirname(file)
3302
3303 Returns the directory name part of the specified file. For example:
3304
3305 \snippet doc/src/snippets/qmake/dirname.pro 0
3306
3307 \section1 error(string)
3308
3309 This function never returns a value. \c qmake displays the given
3310 \e string to the user, and exits. This function should only be used
3311 for unrecoverable errors.
3312
3313 For example:
3314
3315 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 62
3316
3317 \section1 eval(string)
3318 [Conditional]
3319
3320 Evaluates the contents of the string using \c qmake's syntax rules
3321 and returns true.
3322 Definitions and assignments can be used in the string to modify the
3323 values of existing variables or create new definitions.
3324
3325 For example:
3326 \snippet doc/src/snippets/qmake/functions.pro 4
3327
3328 Note that quotation marks can be used to delimit the string, and that
3329 the return value can be discarded if it is not needed.
3330
3331 \section1 exists(filename)
3332 [Conditional]
3333
3334 Tests whether a file with the given \e filename exists.
3335 If the file exists, the function succeeds; otherwise it fails.
3336 If a regular expression is specified for the filename, this function
3337 succeeds if any file matches the regular expression specified.
3338
3339 For example:
3340 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 63
3341
3342 Note that "/" can be used as a directory separator, regardless of the
3343 platform in use.
3344
3345 \section1 find(variablename, substr)
3346
3347 Places all the values in \e variablename that match \e substr. \e
3348 substr may be a regular expression, and will be matched accordingly.
3349
3350 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 64
3351
3352 MY_VAR2 will contain '-Lone -Ltwo -Lthree -Lfour -Lfive', and MY_VAR3 will
3353 contains 'three two three'.
3354
3355 \section1 for(iterate, list)
3356
3357 This special test function will cause a loop to be started that
3358 iterates over all values in \e list, setting \e iterate to each
3359 value in turn. As a convenience, if \e list is 1..10 then iterate will
3360 iterate over the values 1 through 10.
3361
3362 The use of an else scope afer a condition line with a for() loop is
3363 disallowed.
3364
3365 For example:
3366
3367 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 65
3368
3369 \section1 include(filename)
3370 [Conditional]
3371
3372 Includes the contents of the file specified by \e filename into the
3373 current project at the point where it is included. This function
3374 succeeds if \e filename is included; otherwise it fails. The included
3375 file is processed immediately.
3376
3377 You can check whether the file was included by using this function as
3378 the condition for a scope; for example:
3379
3380 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 66
3381
3382 \section1 infile(filename, var, val)
3383 [Conditional]
3384
3385 Succeeds if the file \e filename (when parsed by \c qmake itself)
3386 contains the variable \e var with a value of \e val; otherwise fails.
3387 If you do not specify a third argument (\e val), the function will
3388 only test whether \e var has been declared in the file.
3389
3390 \section1 isEmpty(variablename)
3391 [Conditional]
3392
3393 Succeeds if the variable \e variablename is empty; otherwise fails.
3394 This is the equivalent of \c{count( variablename, 0 )}.
3395
3396 For example:
3397
3398 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 67
3399
3400 \section1 join(variablename, glue, before, after)
3401
3402 Joins the value of \e variablename with \c glue. If this value is
3403 non-empty it prefixes the value with \e before and suffix it with \e
3404 after. \e variablename is the only required field, the others default
3405 to empty strings. If you need to encode spaces in \e glue, \e before, or \e
3406 after you must quote them.
3407
3408 \section1 member(variablename, position)
3409
3410 Returns the value at the given \e position in the list of items in
3411 \e variablename.
3412 If an item cannot be found at the position specified, an empty string is
3413 returned. \e variablename is the only required field. If not specified,
3414 \c position defaults to 0, causing the first value in the list to be
3415 returned.
3416
3417 \section1 message(string)
3418
3419 This function simply writes a message to the console. Unlike the
3420 \c error() function, this function allows processing to continue.
3421
3422 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 68
3423
3424 The above line causes "This is a message" to be written to the console.
3425 The use of quotation marks is optional.
3426
3427 \note By default, messages are written out for each Makefile generated by
3428 qmake for a given project. If you want to ensure that messages only appear
3429 once for each project, test the \c build_pass variable
3430 \l{qmake Advanced Usage}{in conjunction with a scope} to filter out
3431 messages during builds; for example:
3432
3433 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 69
3434
3435 \section1 prompt(question)
3436
3437 Displays the specified \e question, and returns a value read from stdin.
3438
3439 \section1 quote(string)
3440
3441 Converts a whole \e string into a single entity and returns the result.
3442 Newlines, carriage returns, and tabs can be specified in the string
3443 with \\n \\r and \\t. The return value does not contain either single
3444 or double quotation marks unless you explicitly include them yourself,
3445 but will be placed into a single entry (for literal expansion).
3446
3447 \section1 replace(string, old_string, new_string)
3448
3449 Replaces each instance of \c old_string with \c new_string in the
3450 contents of the variable supplied as \c string. For example, the
3451 code
3452
3453 \snippet doc/src/snippets/qmake/replace.pro 0
3454
3455 prints the message:
3456
3457 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 70
3458
3459 \section1 sprintf(string, arguments...)
3460
3461 Replaces %1-%9 with the arguments passed in the comma-separated list
3462 of function \e arguments and returns the processed string.
3463
3464 \section1 system(command)
3465 [Conditional]
3466
3467 Executes the given \c command in a secondary shell, and succeeds
3468 if the command returns with a zero exit status; otherwise fails.
3469 You can check the return value of this function using a scope:
3470
3471 For example:
3472
3473 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 71
3474
3475 Alternatively, you can use this function to obtain stdout and stderr
3476 from the command, and assign it to a variable. For example, you can
3477 use this to interrogate information about the platform:
3478
3479 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 72
3480
3481 \target unique
3482 \section1 unique(variablename)
3483
3484 This will return a list of values in variable that are unique (that is
3485 with repetitive entries removed). For example:
3486
3487 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 73
3488
3489 \section1 warning(string)
3490
3491 This function will always succeed, and will display the given
3492 \e string to the user. message() is a synonym for warning().
3493*/
3494
3495/*!
3496 \page qmake-environment-reference.html
3497 \contentspage {qmake Manual}{Contents}
3498 \previouspage qmake Function Reference
3499
3500 \title Configuring qmake's Environment
3501
3502 \tableofcontents
3503
3504 \target Properties
3505 \section1 Properties
3506
3507 \c qmake has a system of persistant information, this allows you to
3508 \c set a variable in qmake once, and each time qmake is invoked this
3509 value can be queried. Use the following to set a property in qmake:
3510
3511 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 74
3512
3513 The appropriate variable and value should be substituted for
3514 \c VARIABLE and \c VALUE.
3515
3516 To retrieve this information back from qmake you can do:
3517
3518 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 75
3519
3520 \note \c{qmake -query} will only list variables that you have
3521 previously set with \c{qmake -set VARIABLE VALUE}.
3522
3523 This information will be saved into a QSettings object (meaning it
3524 will be stored in different places for different platforms). As
3525 \c VARIABLE is versioned as well, you can set one value in an older
3526 version of \c qmake, and newer versions will retrieve this value. However,
3527 if you set \c VARIABLE for a newer version of \c qmake, the older version
3528 will not use this value. You can however query a specific version of a
3529 variable if you prefix that version of \c qmake to \c VARIABLE, as in
3530 the following example:
3531
3532 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 76
3533
3534 \c qmake also has the notion of \c builtin properties, for example you can
3535 query the installation of Qt for this version of \c qmake with the
3536 \c QT_INSTALL_PREFIX property:
3537
3538 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 77
3539
3540 These built-in properties cannot have a version prefixed to them as
3541 they are not versioned, and each version of \c qmake will have its own
3542 built-in set of these values. The list below outlines the built-in
3543 properties:
3544
3545 \list
3546 \o \c QT_INSTALL_PREFIX - Where the version of Qt this qmake is built for resides
3547 \o \c QT_INSTALL_DATA - Where data for this version of Qt resides
3548 \o \c QMAKE_VERSION - The current version of qmake
3549 \endlist
3550
3551 Finally, these values can be queried in a project file with a special
3552 notation such as:
3553
3554 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 78
3555
3556 \target QMAKESPEC
3557 \section1 QMAKESPEC
3558
3559 \c qmake requires a platform and compiler description file which
3560 contains many default values used to generate appropriate Makefiles.
3561 The standard Qt distribution comes with many of these files, located
3562 in the \c mkspecs subdirectory of the Qt installation.
3563
3564 The \c QMAKESPEC environment variable can contain any of the following:
3565
3566 \list
3567 \o A complete path to a directory containing a \c{qmake.conf} file.
3568 In this case \c qmake will open the \c{qmake.conf} file from within that
3569 directory. If the file does not exist, \c qmake will exit with an
3570 error.
3571 \o The name of a platform-compiler combination. In this case, \c qmake
3572 will search in the directory specified by the \c mkspecs subdirectory
3573 of the data path specified when Qt was compiled (see
3574 QLibraryInfo::DataPath).
3575 \endlist
3576
3577 \bold{Note:} The \c QMAKESPEC path will automatically be added to the
3578 \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} system variable.
3579
3580 \target INSTALLS
3581 \section1 INSTALLS
3582
3583 It is common on Unix to also use the build tool to install applications
3584 and libraries; for example, by invoking \c{make install}. For this reason,
3585 \c qmake has the concept of an install set, an object which contains
3586 instructions about the way part of a project is to be installed.
3587 For example, a collection of documentation files can be described in the
3588 following way:
3589
3590 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 79
3591
3592 The \c path member informs \c qmake that the files should be installed in
3593 \c /usr/local/program/doc (the path member), and the \c files member
3594 specifies the files that should be copied to the installation directory.
3595 In this case, everything in the \c docs directory will be coped to
3596 \c /usr/local/program/doc.
3597
3598 Once an install set has been fully described, you can append it to the
3599 install list with a line like this:
3600
3601 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 80
3602
3603 \c qmake will ensure that the specified files are copied to the installation
3604 directory. If you require greater control over this process, you can also
3605 provide a definition for the \c extra member of the object. For example,
3606 the following line tells \c qmake to execute a series of commands for this
3607 install set:
3608
3609 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 81
3610
3611 The \c unix scope
3612 (see \l{qmake Advanced Usage#Scopes and Conditions}{Scopes and Conditions})
3613 ensures that these particular commands are only executed on Unix platforms.
3614 Appropriate commands for other platforms can be defined using other scope
3615 rules.
3616
3617 Commands specified in the \c extra member are executed before the instructions
3618 in the other members of the object are performed.
3619
3620 If you append a built-in install set to the \c INSTALLS variable and do
3621 not specify \c files or \c extra members, \c qmake will decide what needs to
3622 be copied for you. Currently, the only supported built-in install set is
3623 \c target:
3624
3625 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 82
3626
3627 In the above lines, \c qmake knows what needs to be copied, and will handle
3628 the installation process automatically.
3629
3630 \target cache
3631 \section1 Cache File
3632
3633 The cache file is a special file \c qmake reads to find settings not specified
3634 in the \c qmake.conf file, project files, or at the command line. If
3635 \c -nocache is not specified when \c qmake is run, it will try to find a file
3636 called \c{.qmake.cache} in parent directories of the current directory. If
3637 it fails to find this file, it will silently ignore this step of processing.
3638
3639 If it finds a \c{.qmake.cache} file then it will process this file first before
3640 it processes the project file.
3641
3642 \target LibDepend
3643 \section1 Library Dependencies
3644
3645 Often when linking against a library, \c qmake relies on the underlying
3646 platform to know what other libraries this library links against, and
3647 lets the platform pull them in. In many cases, however, this is not
3648 sufficent. For example, when statically linking a library, no other
3649 libraries are linked to, and therefore no dependencies to those
3650 libraries are created. However, an application that later links
3651 against this library will need to know where to find the symbols that
3652 the static library will require. To help with this situation, \c qmake
3653 attempts to follow a library's dependencies where appropriate, but
3654 this behavior must be explicitly enabled by following two steps.
3655
3656 The first step is to enable dependency tracking in the library itself.
3657 To do this you must tell \c qmake to save information about the library:
3658
3659 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 83
3660
3661 This is only relevant to the \c lib template, and will be ignored for
3662 all others. When this option is enabled, \c qmake will create a file
3663 ending in .prl which will save some meta-information about the
3664 library. This metafile is just like an ordinary project file, but only
3665 contains internal variable declarations. You are free to view this file
3666 and, if it is deleted, \c qmake will know to recreate it when necessary,
3667 either when the project file is later read, or if a dependent library
3668 (described below) has changed. When installing this library, by
3669 specifying it as a target in an \c INSTALLS declaration, \c qmake will
3670 automatically copy the .prl file to the installation path.
3671
3672 The second step in this process is to enable reading of this meta
3673 information in the applications that use the static library:
3674
3675 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 84
3676
3677 When this is enabled, \c qmake will process all libraries linked to
3678 by the application and find their meta-information. \c qmake will use
3679 this to determine the relevant linking information, specifically adding
3680 values to the application project file's list of \c DEFINES as well as
3681 \c LIBS. Once \c qmake has processed this file, it will then look through
3682 the newly introduced libraries in the \c LIBS variable, and find their
3683 dependent .prl files, continuing until all libraries have been resolved.
3684 At this point, the Makefile is created as usual, and the libraries are
3685 linked explicitlyy against the application.
3686
3687 The internals of the .prl file are left closed so they can easily
3688 change later. They are not designed to be changed by hand, should only
3689 be created by \c qmake, and should not be transferred between operating
3690 systems as they may contain platform-dependent information.
3691
3692 \target Extensions
3693 \section1 File Extensions
3694
3695 Under normal circumstances \c qmake will try to use appropriate file extensions
3696 for your platform. However, it is sometimes necessary to override the default
3697 choices for each platform and explicitly define file extensions for \c qmake to use.
3698 This is achieved by redefining certain built-in variables; for example the extension
3699 used for \l moc files can be redefined with the following assignment in a project
3700 file:
3701
3702 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 85
3703
3704 The following variables can be used to redefine common file extensions recognized
3705 by \c qmake:
3706
3707 \list
3708 \o QMAKE_EXT_MOC - This modifies the extension placed on included moc files.
3709 \o QMAKE_EXT_UI - This modifies the extension used for designer UI files (usually
3710 in \c FORMS).
3711 \o QMAKE_EXT_PRL - This modifies the extension placed on
3712 \l{#LibDepend}{library dependency files}.
3713 \o QMAKE_EXT_LEX - This changes the suffix used in files (usually in \c LEXSOURCES).
3714 \o QMAKE_EXT_YACC - This changes the suffix used in files (usually in \c YACCSOURCES).
3715 \o QMAKE_EXT_OBJ - This changes the suffix used on generated object files.
3716 \endlist
3717
3718 All of the above accept just the first value, so you must assign to it just one
3719 value that will be used throughout your project file. There are two variables that
3720 accept a list of values:
3721
3722 \list
3723 \o QMAKE_EXT_CPP - Causes \c qmake to interpret all files with these suffixes as
3724 C++ source files.
3725 \o QMAKE_EXT_H - Causes \c qmake to interpret all files with these suffixes as
3726 C and C++ header files.
3727 \endlist
3728
3729 \target Customizing
3730 \section1 Customizing Makefile Output
3731
3732 \c qmake tries to do everything expected of a cross-platform build tool.
3733 This is often less than ideal when you really need to run special
3734 platform-dependent commands. This can be achieved with specific instructions
3735 to the different \c qmake backends.
3736
3737 Customization of the Makefile output is performed through an object-style
3738 API as found in other places in \c qmake. Objects are defined automatically
3739 by specifying their members; for example:
3740
3741 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 86
3742
3743 The definitions above define a \c qmake target called \c mytarget, containing
3744 a Makefile target called \c{.buildfile} which in turn is generated with
3745 the \c touch command. Finally, the \c{.depends} member specifies that
3746 \c mytarget depends on \c mytarget2, another target that is defined afterwards.
3747 \c mytarget2 is a dummy target; it is only defined to echo some text to
3748 the console.
3749
3750 The final step is to instruct \c qmake that this object is a target to be built:
3751
3752 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 87
3753
3754 This is all you need to do to actually build custom targets. Of course, you may
3755 want to tie one of these targets to the
3756 \l{qmake Variable Reference#TARGET}{qmake build target}. To do this, you simply need to
3757 include your Makefile target in the list of
3758 \l{qmake Variable Reference#PRE_TARGETDEPS}{PRE_TARGETDEPS}.
3759
3760 The following tables are an overview of the options available to you with the QMAKE_EXTRA_TARGETS
3761 variable.
3762
3763 \table
3764 \header
3765 \o Member
3766 \o Description
3767 \row
3768 \o commands
3769 \o The commands for generating the custom build target.
3770 \row
3771 \o CONFIG
3772 \o Specific configuration options for the custom build target. See the CONFIG table for details.
3773 \row
3774 \o depends
3775 \o The existing build targets that the custom build target depends on.
3776 \row
3777 \o recurse
3778 \o Specifies which sub-targets should used when creating the rules in the Makefile to call in
3779 the sub-target specific Makefile. This is only used when \c recursive is set in the CONFIG.
3780 \row
3781 \o recurse_target
3782 \o Specifies the target that should be built via the sub-target Makefile for the rule in the Makefile.
3783 This adds something like $(MAKE) -f Makefile.[subtarget] [recurse_target]. This is only used when
3784 \c recursive is set in the CONFIG.
3785 \row
3786 \o target
3787 \o The file being created by the custom build target.
3788 \endtable
3789
3790 List of members specific to the CONFIG option:
3791
3792 \table
3793 \header
3794 \o Member
3795 \o Description
3796 \row
3797 \o recursive
3798 \o Indicates that rules should be created in the Makefile and thus call
3799 the relevant target inside the sub-target specific Makefile. This defaults to creating
3800 an entry for each of the sub-targets.
3801 \endtable
3802
3803 For convenience, there is also a method of customizing projects
3804 for new compilers or preprocessors:
3805
3806 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 88
3807
3808 With the above definitions, you can use a drop-in replacement for moc if one
3809 is available. The commands is executed on all arguments given to the
3810 \c NEW_HEADERS variable (from the \c input member), and the result is written
3811 to the file defined by the \c output member; this file is added to the
3812 other source files in the project.
3813 Additionally, \c qmake will execute \c depend_command to generate dependency
3814 information, and place this information in the project as well.
3815
3816 These commands can easily be placed into a cache file, allowing subsequent
3817 project files to add arguments to \c NEW_HEADERS.
3818
3819 The following tables are an overview of the options available to you with the QMAKE_EXTRA_COMPILERS
3820 variable.
3821
3822 \table
3823 \header
3824 \o Member
3825 \o Description
3826 \row
3827 \o commands
3828 \o The commands used for for generating the output from the input.
3829 \row
3830 \o CONFIG
3831 \o Specific configuration options for the custom compiler. See the CONFIG table for details.
3832 \row
3833 \o depend_command
3834 \o Specifies a command used to generate the list of dependencies for the output.
3835 \row
3836 \o dependency_type
3837 \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
3838 TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
3839 \row
3840 \o depends
3841 \o Specifies the dependencies of the output file.
3842 \row
3843 \o input
3844 \o The variable that contains the files that should be processed with the custom compiler.
3845 \row
3846 \o name
3847 \o A description of what the custom compiler is doing. This is only used in some backends.
3848 \row
3849 \o output
3850 \o The filename that is created from the custom compiler.
3851 \row
3852 \o output_function
3853 \o Specifies a custom qmake function that is used to specify the filename to be created.
3854 \row
3855 \o variable_out
3856 \o The variable that the files created from the output should be added to.
3857 \endtable
3858
3859 List of members specific to the CONFIG option:
3860
3861 \table
3862 \header
3863 \o Member
3864 \o Description
3865 \row
3866 \o commands
3867 \o The commands used for for generating the output from the input.
3868 \row
3869 \o CONFIG
3870 \o Specific configuration options for the custom compiler. See the CONFIG table for details.
3871 \row
3872 \o depend_command
3873 \o Specifies a command used to generate the list of dependencies for the output.
3874 \row
3875 \o dependency_type
3876 \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
3877 TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
3878 \row
3879 \o depends
3880 \o Specifies the dependencies of the output file.
3881 \row
3882 \o input
3883 \o The variable that contains the files that should be processed with the custom compiler.
3884 \row
3885 \o name
3886 \o A description of what the custom compiler is doing. This is only used in some backends.
3887 \row
3888 \o output
3889 \o The filename that is created from the custom compiler.
3890 \row
3891 \o output_function
3892 \o Specifies a custom qmake function that is used to specify the filename to be created.
3893 \row
3894 \o variables
3895 \o Indicates that the variables specified here are replaced with $(QMAKE_COMP_VARNAME) when refered to
3896 in the pro file as $(VARNAME).
3897 \row
3898 \o variable_out
3899 \o The variable that the files created from the output should be added to.
3900 \endtable
3901
3902 List of members specific to the CONFIG option:
3903
3904 \table
3905 \header
3906 \o Member
3907 \o Description
3908 \row
3909 \o combine
3910 \o Indicates that all of the input files are combined into a single output file.
3911 \row
3912 \o target_predeps
3913 \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
3914 \row
3915 \o explicit_dependencies
3916 \o The dependencies for the output only get generated from the depends member and from
3917 nowhere else.
3918 \row
3919 \o no_link
3920 \o Indicates that the output should not be added to the list of objects to be linked in.
3921 \endtable
3922
3923 \note Symbian platform specific: Generating objects to be linked in is
3924 not supported on the Symbian platform, so either the \c CONFIG option
3925 \c no_link or variable \c variable_out should always be defined for
3926 extra compilers.
3927
3928*/
3929
3930/*!
3931 \page qmake-advanced-usage.html
3932 \title qmake Advanced Usage
3933 \contentspage {qmake Manual}{Contents}
3934 \previouspage qmake Platform Notes
3935 \nextpage Using Precompiled Headers
3936
3937 Many \c qmake project files simply describe the sources and header files used
3938 by the project, using a list of \c{name = value} and \c{name += value}
3939 definitions. \c qmake also provides other operators, functions, and scopes
3940 that can be used to process the information supplied in variable declarations.
3941 These advanced features allow Makefiles to be generated for multiple platforms
3942 from a single project file.
3943
3944 \tableofcontents
3945
3946 \section1 Operators
3947
3948 In many project files, the assignment (\c{=}) and append (\c{+=}) operators can
3949 be used to include all the information about a project. The typical pattern of
3950 use is to assign a list of values to a variable, and append more values
3951 depending on the result of various tests. Since \c qmake defines certain
3952 variables using default values, it is sometimes necessary to use the removal
3953 (\c{-=}) operator to filter out values that are not required. The following
3954 operators can be used to manipulate the contents of variables.
3955
3956 The \c = operator assigns a value to a variable:
3957
3958 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 89
3959
3960 The above line sets the \c TARGET variable to \c myapp. This will overwrite any
3961 values previously set for \c TARGET with \c myapp.
3962
3963 The \c += operator appends a new value to the list of values in a variable:
3964
3965 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 90
3966
3967 The above line appends \c QT_DLL to the list of pre-processor defines to be put
3968 in the generated Makefile.
3969
3970 The \c -= operator removes a value from the list of values in a variable:
3971
3972 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 91
3973
3974 The above line removes \c QT_DLL from the list of pre-processor defines to be
3975 put in the generated Makefile.
3976
3977 The \c *= operator adds a value to the list of values in a variable, but only
3978 if it is not already present. This prevents values from being included many
3979 times in a variable. For example:
3980
3981 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 92
3982
3983 In the above line, \c QT_DLL will only be added to the list of pre-processor
3984 defines if it is not already defined. Note that the
3985 \l{qmake Function Reference#unique}{unique()}
3986 function can also be used to ensure that a variables only contains one
3987 instance of each value.
3988
3989 The \c ~= operator replaces any values that match a regular expression with
3990 the specified value:
3991
3992 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 93
3993
3994 In the above line, any values in the list that start with \c QT_D or \c QT_T are
3995 replaced with \c QT.
3996
3997 The \c $$ operator is used to extract the contents of a variable, and can be
3998 used to pass values between variables or supply them to functions:
3999
4000 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 94
4001
4002 \target Scopes
4003 \section1 Scopes
4004
4005 Scopes are similar to \c if statements in procedural programming languages.
4006 If a certain condition is true, the declarations inside the scope are processed.
4007
4008 \section2 Syntax
4009
4010 Scopes consist of a condition followed by an opening brace on the same line,
4011 a sequence of commands and definitions, and a closing brace on a new line:
4012
4013 \snippet doc/src/snippets/qmake/scopes.pro syntax
4014
4015 The opening brace \e{must be written on the same line as the condition}.
4016 Scopes may be concatenated to include more than one condition; see below
4017 for examples.
4018
4019 \section2 Scopes and Conditions
4020
4021 A scope is written as a condition followed by a series of declarations
4022 contained within a pair of braces; for example:
4023
4024 \snippet doc/src/snippets/qmake/scopes.pro 0
4025
4026 The above code will add the \c paintwidget_win.cpp file to the sources listed
4027 in the generated Makefile if \c qmake is used on a Windows platform.
4028 If \c qmake is used on a platform other than Windows, the define will be
4029 ignored.
4030
4031 The conditions used in a given scope can also be negated to provide an
4032 alternative set of declarations that will be processed only if the
4033 original condition is false. For example, suppose we want to process
4034 something on all platforms \e except for Windows. We can achieve this by
4035 negating the scope like this:
4036
4037 \snippet doc/src/snippets/qmake/scopes.pro 1
4038
4039 Scopes can be nested to combine more than one condition. For instance, if
4040 you want to include a particular file for a certain platform only if
4041 debugging is enabled then you write the following:
4042
4043 \snippet doc/src/snippets/qmake/scopes.pro 2
4044
4045 To save writing many nested scopes, you can nest scopes using the \c :
4046 operator. The nested scopes in the above example can be rewritten in
4047 the following way:
4048
4049 \snippet doc/src/snippets/qmake/scopes.pro 3
4050
4051 You may also use the \c : operator to perform single line conditional
4052 assignments; for example:
4053
4054 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 95
4055
4056 The above line adds \c QT_DLL to the \c DEFINES variable only on the
4057 Windows platform.
4058 Generally, the \c : operator behaves like a logical AND operator, joining
4059 together a number of conditions, and requiring all of them to be true.
4060
4061 There is also the \c | operator to act like a logical OR operator, joining
4062 together a number of conditions, and requiring only one of them to be true.
4063
4064 \snippet doc/src/snippets/qmake/scopes.pro 4
4065
4066 You can also provide alternative declarations to those within a scope by
4067 using an \c else scope. Each \c else scope is processed if the conditions
4068 for the preceding scopes are false.
4069 This allows you to write complex tests when combined with other scopes
4070 (separated by the \c : operator as above). For example:
4071
4072 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 96
4073
4074 \section2 Configuration and Scopes
4075
4076 The values stored in the
4077 \l{qmake-project-files.html#GeneralConfiguration}{\c CONFIG variable}
4078 are treated specially by \c qmake. Each of the possible values can be
4079 used as the condition for a scope. For example, the list of values
4080 held by \c CONFIG can be extended with the \c opengl value:
4081
4082 \snippet doc/src/snippets/qmake/configscopes.pro 0
4083
4084 As a result of this operation, any scopes that test for \c opengl will
4085 be processed. We can use this feature to give the final executable an
4086 appropriate name:
4087
4088 \snippet doc/src/snippets/qmake/configscopes.pro 1
4089 \snippet doc/src/snippets/qmake/configscopes.pro 2
4090 \snippet doc/src/snippets/qmake/configscopes.pro 3
4091
4092 This feature makes it easy to change the configuration for a project
4093 without losing all the custom settings that might be needed for a specific
4094 configuration. In the above code, the declarations in the first scope are
4095 processed, and the final executable will be called \c application-gl.
4096 However, if \c opengl is not specified, the declarations in the second
4097 scope are processed instead, and the final executable will be called
4098 \c application.
4099
4100 Since it is possible to put your own values on the \c CONFIG
4101 line, this provides you with a convenient way to customize project files
4102 and fine-tune the generated Makefiles.
4103
4104 \section2 Platform Scope Values
4105
4106 In addition to the \c win32, \c macx, and \c unix values used in many
4107 scope conditions, various other built-in platform and compiler-specific
4108 values can be tested with scopes. These are based on platform
4109 specifications provided in Qt's \c mkspecs directory. For example, the
4110 following lines from a project file show the current specification in
4111 use and test for the \c linux-g++ specification:
4112
4113 \snippet doc/src/snippets/qmake/specifications.pro 0
4114
4115 You can test for any other platform-compiler combination as long as a
4116 specification exists for it in the \c mkspecs directory.
4117
4118 The scope \c unix is true for the Symbian platform.
4119
4120 \section1 Variables
4121
4122 Many of the variables used in project files are special variables that
4123 \c qmake uses when generating Makefiles, such as \c DEFINES, \c SOURCES,
4124 and \c HEADERS. It is possible for you to create variables for your own
4125 use; \c qmake creates new variables with a given name when it encounters
4126 an assignment to that name. For example:
4127
4128 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 97
4129
4130 There are no restricitions on what you do to your own variables, as \c
4131 qmake will ignore them unless it needs to evaluate them when processing
4132 a scope.
4133
4134 You can also assign the value of a current variable to another
4135 variable by prefixing $$ to the variable name. For example:
4136
4137 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 98
4138
4139 Now the MY_DEFINES variable contains what is in the DEFINES variable at
4140 this point in the project file. This is also equivalent to:
4141
4142 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 99
4143
4144 The second notation allows you to append the contents of the variable to
4145 another value without separating the two with a space. For example, the
4146 following will ensure that the final executable will be given a name
4147 that includes the project template being used:
4148
4149 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 100
4150
4151 Variables can be used to store the contents of environment variables.
4152 These can be evaluated at the time that \c qmake is run, or included
4153 in the generated Makefile for evaluation when the project is built.
4154
4155 To obtain the contents of an environment value when \c qmake is run,
4156 use the \c $$(...) operator:
4157
4158 \snippet doc/src/snippets/qmake/environment.pro 0
4159
4160 In the above assignment, the value of the \c PWD environment variable
4161 is read when the project file is processed.
4162
4163 To obtain the contents of an environment value at the time when the
4164 generated Makefile is processed, use the \c $(...) operator:
4165
4166 \snippet doc/src/snippets/qmake/environment.pro 1
4167
4168 In the above assignment, the value of \c PWD is read immediately
4169 when the project file is processed, but \c $(PWD) is assigned to
4170 \c DESTDIR in the generated Makefile. This makes the build process
4171 more flexible as long as the environment variable is set correctly
4172 when the Makefile is processed.
4173
4174 The special \c $$[...] operator can be used to access various
4175 configuration options that were set when Qt was built:
4176
4177 \snippet doc/src/snippets/qmake/qtconfiguration.pro 0
4178
4179 The variables accessible with this operator are typically used to
4180 enable third party plugins and components to be integrated with Qt.
4181 For example, a \QD plugin can be installed alongside \QD's built-in
4182 plugins if the following declaration is made in its project file:
4183
4184 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 101
4185
4186 \target VariableProcessingFunctions
4187 \section1 Variable Processing Functions
4188
4189 \c qmake provides a selection of built-in functions to allow the
4190 contents of variables to be processed. These functions process the
4191 arguments supplied to them and return a value, or list of values, as
4192 a result. In order to assign a result to a variable, it is necessary
4193 to use the \c $$ operator with this type of function in the same way
4194 used to assign contents of one variable to another:
4195
4196 \snippet doc/src/snippets/qmake/functions.pro 1
4197
4198 This type of function should be used on the right-hand side of
4199 assignments (i.e, as an operand).
4200
4201 It is possible to define your own functions for processing the
4202 contents of variables. These functions can be defined in the following
4203 way:
4204
4205 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 102
4206
4207 The following example function takes a variable name as its only
4208 argument, extracts a list of values from the variable with the
4209 \l{qmake-function-reference.html}{eval()} built-in function,
4210 and compiles a list of files:
4211
4212 \snippet doc/src/snippets/qmake/replacefunction.pro 0
4213
4214 \target ConditionalFunctions
4215 \section1 Conditional Functions
4216
4217 \c qmake provides built-in functions that can be used as conditions
4218 when writing scopes. These functions do not return a value, but
4219 instead indicate "success" or "failure":
4220
4221 \snippet doc/src/snippets/qmake/functions.pro 3
4222
4223 This type of function should be used in conditional expressions
4224 only.
4225
4226 It is possible to define your own functions to provide conditions
4227 for scopes. The following example tests whether each file in a list
4228 exists and returns true if they all exist, or false if not:
4229
4230 \snippet doc/src/snippets/qmake/testfunction.pro 0
4231
4232 \section1 Adding New Configuration Features
4233
4234 \c qmake lets you create your own \e features that can be included in
4235 project files by adding their names to the list of values specified by
4236 the \c CONFIG variable. Features are collections of custom functions and
4237 definitions in \c{.prf} files that can reside in one of many standard
4238 directories. The locations of these directories are defined in a number
4239 of places, and \c qmake checks each of them in the following order when
4240 it looks for \c{.prf} files:
4241
4242 \list 1
4243 \o In a directory listed in the \c QMAKEFEATURES environment variable;
4244 this contains a colon-separated list of directories.
4245 \o In a directory listed in the \c QMAKEFEATURES property variable; this
4246 contains a colon-spearated list of directories.
4247 \omit
4248 \o In a features directory beneath the project's root directory (where
4249 the \c{.qmake.cache} file is generated).
4250 \endomit
4251 \o In a features directory residing within a \c mkspecs directory.
4252 \c mkspecs directories can be located beneath any of the directories
4253 listed in the \c QMAKEPATH environment variable (a colon-separated list
4254 of directories). (\c{$QMAKEPATH/mkspecs/<features>})
4255 \o In a features directory residing beneath the directory provided by the
4256 \c QMAKESPEC environment variable. (\c{$QMAKESPEC/<features>})
4257 \o In a features directory residing in the \c data_install/mkspecs directory.
4258 (\c{data_install/mkspecs/<features>})
4259 \o In a features directory that exists as a sibling of the directory
4260 specified by the \c QMAKESPEC environment variable.
4261 (\c{$QMAKESPEC/../<features>})
4262 \endlist
4263
4264 The following features directories are searched for features files:
4265
4266 \list 1
4267 \o \c{features/unix}, \c{features/win32}, or \c{features/macx}, depending on
4268 the platform in use
4269 \o \c features/
4270 \endlist
4271
4272 For example, consider the following assignment in a project file:
4273
4274 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 103
4275
4276 With this addition to the \c CONFIG variable, \c qmake will search the
4277 locations listed above for the \c myfeatures.prf file after it has
4278 finished parsing your project file. On Unix systems, it will look for
4279 the following file:
4280
4281 \list 1
4282 \o \c $QMAKEFEATURES/myfeatures.prf (for each directory listed in the
4283 \c QMAKEFEATURES environment variable)
4284 \o \c $$QMAKEFEATURES/myfeatures.prf (for each directory listed in the
4285 \c QMAKEFEATURES property variable)
4286 \o \c myfeatures.prf (in the project's root directory)
4287 \o \c $QMAKEPATH/mkspecs/features/unix/myfeatures.prf and
4288 \c $QMAKEPATH/mkspecs/features/myfeatures.prf (for each directory
4289 listed in the \c QMAKEPATH environment variable)
4290 \o \c $QMAKESPEC/features/unix/myfeatures.prf and
4291 \c $QMAKESPEC/features/myfeatures.prf
4292 \o \c data_install/mkspecs/features/unix/myfeatures.prf and
4293 \c data_install/mkspecs/features/myfeatures.prf
4294 \o \c $QMAKESPEC/../features/unix/myfeatures.prf and
4295 \c $QMAKESPEC/../features/myfeatures.prf
4296 \endlist
4297
4298 \note The \c{.prf} files must have names in lower case.
4299
4300
4301*/
4302
4303/*!
4304 \page qmake-precompiledheaders.html
4305 \title Using Precompiled Headers
4306 \contentspage {qmake Manual}{Contents}
4307 \previouspage qmake Advanced Usage
4308 \nextpage qmake Reference
4309
4310 \target Introduction
4311
4312 Precompiled headers are a performance feature supported by some
4313 compilers to compile a stable body of code, and store the compiled
4314 state of the code in a binary file. During subsequent compilations,
4315 the compiler will load the stored state, and continue compiling the
4316 specified file. Each subsequent compilation is faster because the
4317 stable code does not need to be recompiled.
4318
4319 \c qmake supports the use of precompiled headers (PCH) on some
4320 platforms and build environments, including:
4321 \list
4322 \o Windows
4323 \list
4324 \o nmake
4325 \o Dsp projects (VC 6.0)
4326 \o Vcproj projects (VC 7.0 \& 7.1)
4327 \endlist
4328 \o Mac OS X
4329 \list
4330 \o Makefile
4331 \o Xcode
4332 \endlist
4333 \o Unix
4334 \list
4335 \o GCC 3.4 and above
4336 \endlist
4337 \endlist
4338
4339 \target ADD_PCH
4340 \section1 Adding Precompiled Headers to Your Project
4341
4342 \target PCH_CONTENTS
4343 \section2 Contents of the Precompiled Header File
4344
4345 The precompiled header must contain code which is \e stable
4346 and \e static throughout your project. A typical PCH might look
4347 like this:
4348
4349 \section3 Example: \c stable.h
4350
4351 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 104
4352
4353 Note that a precompiled header file needs to separate C includes from
4354 C++ includes, since the precompiled header file for C files may not
4355 contain C++ code.
4356
4357 \target PROJECT_OPTIONS
4358 \section2 Project Options
4359
4360 To make your project use PCH, you only need to define the
4361 \c PRECOMPILED_HEADER variable in your project file:
4362
4363 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 105
4364
4365 \c qmake will handle the rest, to ensure the creation and use of the
4366 precompiled header file. You do not need to include the precompiled
4367 header file in \c HEADERS, as \c qmake will do this if the configuration
4368 supports PCH.
4369
4370 All platforms that support precompiled headers have the configuration
4371 option \c precompile_header set. Using this option, you may trigger
4372 conditional blocks in your project file to add settings when using PCH.
4373 For example:
4374
4375 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 106
4376
4377 \section1 Notes on Possible Issues
4378
4379 On some platforms, the file name suffix for precompiled header files is
4380 the same as that for other object files. For example, the following
4381 declarations may cause two different object files with the same name to
4382 be generated:
4383
4384 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 107
4385
4386 To avoid potential conflicts like these, it is good practice to ensure
4387 that header files that will be precompiled are given distinctive names.
4388
4389 \target EXAMPLE_PROJECT
4390 \section1 Example Project
4391
4392 You can find the following source code in the
4393 \c{examples/qmake/precompile} directory in the Qt distribution:
4394
4395 \section2 \c mydialog.ui
4396
4397 \quotefromfile examples/qmake/precompile/mydialog.ui
4398 \printuntil
4399
4400 \section2 \c stable.h
4401
4402 \snippet examples/qmake/precompile/stable.h 0
4403
4404 \section2 \c myobject.h
4405
4406 \snippet examples/qmake/precompile/myobject.h 0
4407
4408 \section2 \c myobject.cpp
4409
4410 \snippet examples/qmake/precompile/myobject.cpp 0
4411
4412 \section2 \c util.cpp
4413
4414 \snippet examples/qmake/precompile/util.cpp 0
4415
4416 \section2 \c main.cpp
4417
4418 \snippet examples/qmake/precompile/main.cpp 0
4419
4420 \section2 \c precompile.pro
4421
4422 \snippet examples/qmake/precompile/precompile.pro 0
4423*/
4424
4425/*!
4426 \page qmake-tutorial.html
4427 \title qmake Tutorial
4428 \contentspage {qmake Manual}{Contents}
4429 \previouspage qmake Manual
4430 \nextpage qmake Common Projects
4431
4432 This tutorial teaches you how to use \c qmake. We recommend that
4433 you read the \c qmake user guide after completing this tutorial.
4434
4435 \section1 Starting off Simple
4436
4437 Let's assume that you have just finished a basic implementation of
4438 your application, and you have created the following files:
4439
4440 \list
4441 \o hello.cpp
4442 \o hello.h
4443 \o main.cpp
4444 \endlist
4445
4446 You will find these files in the \c{examples/qmake/tutorial} directory
4447 of the Qt distribution. The only other thing you know about the setup of
4448 the application is that it's written in Qt. First, using your favorite
4449 plain text editor, create a file called \c hello.pro in
4450 \c{examples/qmake/tutorial}. The first thing you need to do is add the
4451 lines that tell \c qmake about the source and header files that are part
4452 of your development project.
4453
4454 We'll add the source files to the project file first. To do this you
4455 need to use the \l{qmake Variable Reference#SOURCES}{SOURCES} variable.
4456 Just start a new line with \c {SOURCES +=} and put hello.cpp after it.
4457 You should have something like this:
4458
4459 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 108
4460
4461 We repeat this for each source file in the project, until we end up
4462 with the following:
4463
4464 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 109
4465
4466 If you prefer to use a Make-like syntax, with all the files listed in
4467 one go you can use the newline escaping like this:
4468
4469 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 110
4470
4471 Now that the source files are listed in the project file, the header
4472 files must be added. These are added in exactly the same way as source
4473 files, except that the variable name we use is
4474 \l{qmake Variable Reference#HEADERS}{HEADERS}.
4475
4476 Once you have done this, your project file should look something like
4477 this:
4478
4479 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 111
4480
4481 The target name is set automatically; it is the same as the project
4482 file, but with the suffix appropriate to the platform. For example, if
4483 the project file is called \c hello.pro, the target will be \c hello.exe
4484 on Windows and \c hello on Unix. If you want to use a different name
4485 you can set it in the project file:
4486
4487 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 112
4488
4489 The final step is to set the \l{qmake Variable Reference#CONFIG}{CONFIG}
4490 variable. Since this is a Qt application, we need to put \c qt on the
4491 \c CONFIG line so that \c qmake will add the relevant libraries to be
4492 linked against and ensure that build lines for \c moc and \c uic are
4493 included in the generated Makefile.
4494
4495 The finished project file should look like this:
4496
4497 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 113
4498
4499 You can now use \c qmake to generate a Makefile for your application.
4500 On the command line, in your project's directory, type the following:
4501
4502 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 114
4503
4504 Then type \c make or \c nmake depending on the compiler you use.
4505
4506 For Visual Studio users, \c qmake can also generate \c .dsp or
4507 \c .vcproj files, for example:
4508
4509 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 115
4510
4511 \section1 Making an Application Debuggable
4512
4513 The release version of an application doesn't contain any debugging
4514 symbols or other debugging information. During development it is useful
4515 to produce a debugging version of the application that has the
4516 relevant information. This is easily achieved by adding \c debug to the
4517 \c CONFIG variable in the project file.
4518
4519 For example:
4520
4521 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 116
4522
4523 Use \c qmake as before to generate a Makefile and you will be able to
4524 obtain useful information about your application when running it in
4525 a debugging environment.
4526
4527 \section1 Adding Platform-Specific Source Files
4528
4529 After a few hours of coding, you might have made a start on the
4530 platform-specific part of your application, and decided to keep the
4531 platform-dependent code separate. So you now have two new files to
4532 include into your project file: \c hellowin.cpp and \c
4533 hellounix.cpp. We can't just add these to the \c SOURCES
4534 variable since this will put both files in the Makefile. So, what we
4535 need to do here is to use a scope which will be processed depending on
4536 which platform \c qmake is run on.
4537
4538 A simple scope that will add in the platform-dependent file for
4539 Windows looks like this:
4540
4541 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 117
4542
4543 So if \c qmake is run on Windows, it will add \c hellowin.cpp to the
4544 list of source files. If \c qmake is run on any other platform, it
4545 will simply ignore it. Now all that is left to be done is to create a
4546 scope for the Unix-specific file.
4547
4548 When you have done that, your project file should now look
4549 something like this:
4550
4551 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 118
4552
4553 Use \c qmake as before to generate a Makefile.
4554
4555 \section1 Stopping qmake If a File Doesn't Exist
4556
4557 You may not want to create a Makefile if a certain file doesn't exist.
4558 We can check if a file exists by using the exists() function. We can
4559 stop \c qmake from processing by using the error() function. This
4560 works in the same way as scopes do. Simply replace the scope condition
4561 with the function. A check for a \c main.cpp file looks like this:
4562
4563 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 119
4564
4565 The \c{!} symbol is used to negate the test; i.e. \c{exists( main.cpp )}
4566 is true if the file exists, and \c{!exists( main.cpp )} is true if the
4567 file doesn't exist.
4568
4569 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 120
4570
4571 Use \c qmake as before to generate a makefile. If you rename \c
4572 main.cpp temporarily, you will see the message and \c qmake will stop
4573 processing.
4574
4575 \section1 Checking for More than One Condition
4576
4577 Suppose you use Windows and you want to be able to see statement
4578 output with qDebug() when you run your application on the command line.
4579 Unless you build your application with the appropriate console setting,
4580 you won't see the output. We can easily put \c console on the \c CONFIG
4581 line so that on Windows the makefile will have this setting. However,
4582 let's say that we only want to add the \c CONFIG line if we are running
4583 on Windows \e and when \c debug is already on the \c CONFIG line.
4584 This requires using two nested scopes; just create one scope, then create
4585 the other inside it. Put the settings to be processed inside the last
4586 scope, like this:
4587
4588 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 121
4589
4590 Nested scopes can be joined together using colons, so the final
4591 project file looks like this:
4592
4593 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 122
4594
4595 That's it! You have now completed the tutorial for \c qmake, and are
4596 ready to write project files for your development projects.
4597*/
4598
4599/*!
4600 \page qmake-common-projects.html
4601 \title qmake Common Projects
4602 \contentspage {qmake Manual}{Contents}
4603 \previouspage qmake Tutorial
4604 \nextpage Using qmake
4605
4606 This chapter describes how to set up \c qmake project files for three
4607 common project types that are based on Qt. Although all kinds of
4608 projects use many of the same variables, each of them use project-specific
4609 variables to customize output files.
4610
4611 Platform-specific variables are not described here; we refer the reader to
4612 the \l{Deploying Qt Applications} document for information on issues such as
4613 \l{Deploying an Application on Mac OS X#Architecture Dependencies}{building
4614 universal binaries for Mac OS X} and
4615 \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
4616 {handling Visual Studio manifest files}.
4617
4618 \tableofcontents
4619
4620 \target Application
4621 \section1 Building an Application
4622
4623 \section2 The app Template
4624
4625 The \c app template tells \c qmake to generate a Makefile that will build
4626 an application. With this template, the type of application can be specified
4627 by adding one of the following options to the \c CONFIG variable definition:
4628
4629 \table
4630 \header \o Option \o Description
4631 \row \o windows \o The application is a Windows GUI application.
4632 \row \o console \o \c app template only: the application is a Windows console
4633 application.
4634 \endtable
4635
4636 When using this template the following \c qmake system variables are recognized.
4637 You should use these in your .pro file to specify information about your
4638 application.
4639
4640 \list
4641 \o HEADERS - A list of all the header files for the application.
4642 \o SOURCES - A list of all the source files for the application.
4643 \o FORMS - A list of all the UI files (created using \c{Qt Designer})
4644 for the application.
4645 \o LEXSOURCES - A list of all the lex source files for the application.
4646 \o YACCSOURCES - A list of all the yacc source files for the application.
4647 \o TARGET - Name of the executable for the application. This defaults
4648 to the name of the project file. (The extension, if any, is added
4649 automatically).
4650 \o DESTDIR - The directory in which the target executable is placed.
4651 \o DEFINES - A list of any additional pre-processor defines needed for the application.
4652 \o INCLUDEPATH - A list of any additional include paths needed for the application.
4653 \o DEPENDPATH - The dependency search path for the application.
4654 \o VPATH - The search path to find supplied files.
4655 \o DEF_FILE - Windows only: A .def file to be linked against for the application.
4656 \o RC_FILE - Windows only: A resource file for the application.
4657 \o RES_FILE - Windows only: A resource file to be linked against for the application.
4658 \endlist
4659
4660 You only need to use the system variables that you have values for,
4661 for instance, if you do not have any extra INCLUDEPATHs then you do not
4662 need to specify any, \c qmake will add in the default ones needed.
4663 For instance, an example project file might look like this:
4664
4665 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 123
4666
4667 For items that are single valued, e.g. the template or the destination
4668 directory, we use "="; but for multi-valued items we use "+=" to \e
4669 add to the existing items of that type. Using "=" replaces the item's
4670 value with the new value, for example if we wrote \c{DEFINES=QT_DLL},
4671 all other definitions would be deleted.
4672
4673 \target Library
4674 \section1 Building a Library
4675
4676 \section2 The lib Template
4677
4678 The \c lib template tells \c qmake to generate a Makefile that will
4679 build a library. When using this template, in addition to the system variables
4680 mentioned above for the \c app template the \c VERSION variable is
4681 supported. You should use these in your .pro file to specify
4682 information about the library.
4683
4684 When using the \c lib template, the following options can be added to the
4685 \c CONFIG variable to determine the type of library that is built:
4686
4687 \table
4688 \header \o Option \o Description
4689 \row \o dll \o The library is a shared library (dll).
4690 \row \o staticlib \o The library is a static library.
4691 \row \o plugin \o The library is a plugin; this also enables the dll option.
4692 \endtable
4693
4694 The following option can also be defined to provide additional information about
4695 the library.
4696
4697 \list
4698 \o VERSION - The version number of the target library, for example, 2.3.1.
4699 \endlist
4700
4701 The target file name for the library is platform-dependent. For example, on
4702 X11 and Mac OS X, the library name will be prefixed by \c lib; on Windows,
4703 no prefix is added to the file name.
4704
4705 \target Plugin
4706 \section1 Building a Plugin
4707
4708 Plugins are built using the \c lib template, as described in the previous
4709 section. This tells \c qmake to generate a Makefile for the project that will
4710 build a plugin in a suitable form for each platform, usually in the form of a
4711 library. As with ordinary libraries, the \c VERSION variable is used to specify
4712 information about the plugin.
4713
4714 \list
4715 \o VERSION - The version number of the target library, for example, 2.3.1.
4716 \endlist
4717
4718 \section2 Building a Qt Designer Plugin
4719
4720 \QD plugins are built using a specific set of configuration settings that
4721 depend on the way Qt was configured for your system. For convenience, these
4722 settings can be enabled by adding \c designer to the project's \c CONFIG
4723 variable. For example:
4724
4725 \snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
4726
4727 See the \l{Qt Designer Examples} for more examples of plugin-based projects.
4728
4729 \section1 Building and Installing in Debug and Release Modes
4730
4731 Sometimes, it is necessary to build a project in both debug and release
4732 modes. Although the \c CONFIG variable can hold both \c debug and \c release
4733 options, the \c debug option overrides the \c release option.
4734
4735 \section2 Building in Both Modes
4736
4737 To enable a project to be built in both modes, you must add the
4738 \c debug_and_release option to your project's \c CONFIG definition:
4739
4740 \snippet doc/src/snippets/qmake/debug_and_release.pro 0
4741 \snippet doc/src/snippets/qmake/debug_and_release.pro 1
4742
4743 The scope in the above snippet modifies the build target in each mode to
4744 ensure that the resulting targets have different names. Providing different
4745 names for targets ensures that one will not overwrite the other.
4746
4747 When \c qmake processes the project file, it will generate a Makefile rule
4748 to allow the project to be built in both modes. This can be invoked in the
4749 following way:
4750
4751 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 124
4752
4753 The \c build_all option can be added to the \c CONFIG variable in the
4754 project file to ensure that the project is built in both modes by default:
4755
4756 \snippet doc/src/snippets/qmake/debug_and_release.pro 2
4757
4758 This allows the Makefile to be processed using the default rule:
4759
4760 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 125
4761
4762 \section2 Installing in Both Modes
4763
4764 The \c build_all option also ensures that both versions of the target
4765 will be installed when the installation rule is invoked:
4766
4767 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 126
4768
4769 It is possible to customize the names of the build targets depending on
4770 the target platform. For example, a library or plugin may be named using a
4771 different convention on Windows to the one used on Unix platforms:
4772
4773 \omit
4774 Note: This was originally used in the customwidgetplugin.pro file, but is
4775 no longer needed there.
4776 \endomit
4777 \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 127
4778
4779 The default behavior in the above snippet is to modify the name used for
4780 the build target when building in debug mode. An \c else clause could be
4781 added to the scope to do the same for release mode; left as it is, the
4782 target name remains unmodified.
4783*/
4784
Note: See TracBrowser for help on using the repository browser.