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