summaryrefslogtreecommitdiffstats
path: root/qmake/book/qmake-commandreference.leaf
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/book/qmake-commandreference.leaf')
-rw-r--r--qmake/book/qmake-commandreference.leaf2156
1 files changed, 2156 insertions, 0 deletions
diff --git a/qmake/book/qmake-commandreference.leaf b/qmake/book/qmake-commandreference.leaf
new file mode 100644
index 000000000..e20c42185
--- /dev/null
+++ b/qmake/book/qmake-commandreference.leaf
@@ -0,0 +1,2156 @@
+\chapter qmake Command Reference
+
+\section1 qmake Command Reference
+
+\list
+\i \link #About About This Reference \endlink
+\i \link #Commands Command Line Options \endlink
+\i \link #SystemVariables System Variables \endlink
+\i \link #Functions Functions \endlink
+\i \link #Properties Properties \endlink
+\i \link #Environment Environment Variables and Configuration \endlink
+\i \link #Extensions File Extensions \endlink
+\i \link #Customizing Customizing Makefile Output \endlink
+\endlist
+
+
+\target About
+\section1 About This Reference
+
+This reference is a detailed index of all command line options,
+configurations and internal variables used by the cross-platform
+makefile generation utility \e qmake.
+
+In addition to the variables and functions described in the following
+sections, \e qmake project files may also include comments.
+Comments begin with the '#' symbol and run to the end of the line.
+
+\target Commands
+\section1 Command Line Options
+
+\section2 Syntax
+
+\code
+qmake [options] files
+\endcode
+
+\section2 Options
+
+The following options can be specified on the command line to \e qmake:
+
+\list
+\i \c -o file \BR
+ \e qmake output will be directed to \e file. if this argument
+ is not specified, then \e qmake will try to guess a suitable name. If '-' is
+ specified, output is directed to stdout.
+\i \c -unix \BR
+ \e qmake will run in unix mode. In this mode, Unix file
+ naming and path conventions will be used, additionally testing for unix
+ (as a scope) will succeed. This is the default mode on all Unices.
+\i \c -macx \BR
+ \e qmake will run in Mac OS X mode. In this mode, Unix file
+ naming and path conventions will be used, additionally testing for macx
+ (as a scope) will succeed. This is the default mode on Mac OS X.
+\i \c -win32 \BR
+ \e qmake will run in win32 mode. In this mode, Windows file naming and path
+ conventions will be used, additionally testing for win32 (as a scope) will succeed.
+ This is the default mode on Windows.
+\i \c -d \BR
+ \e qmake will output (hopefully) useful debugging information.
+\i \c -t tmpl \BR
+ \e qmake will override any set TEMPLATE variables with tmpl, but only
+ \e after the .pro file has been processed.
+\i \c -tp prefix \BR
+ \e qmake will add the prefix to the TEMPLATE variable.
+\i \c -help \BR
+ \e qmake will go over these features and give some useful help.
+\endlist
+
+There are also warning options that can help to find problems in your
+project file:
+
+\list
+\i \c -Wall \BR
+ With this \e qmake will turn on all known warnings.
+\i \c -Wnone \BR
+ No warning information will be generated by \e qmake.
+\i \c -Wparser \BR
+ \e qmake will only generate parser warnings, this will alert
+ you to common pitfalls, and potential problems in the parsing of your .pro
+ files.
+\i \c -Wlogic \BR
+ Again \e qmake will warn of common pitfalls, and potential problems. This can
+ include (but not limited to) checking if a file is placed into a list of files
+ multiple times, if a file cannot be found, etc.
+\endlist
+
+\e qmake supports two different modes of operation. The first mode,
+which is the default is makefile generation. In this mode, \e qmake
+will take a .pro file and turn it into a makefile. Creating makefiles
+is covered by this reference guide, there is another mode which
+generates .pro files.
+
+To toggle between these modes you must specify in the first argument
+what mode you want to use. If no mode is specified, \e qmake will
+assume you want makefile mode. The available modes are:
+
+\list
+\i \c -makefile \BR
+ \e qmake output will be a makefile (\link #MakefileMode Makefile mode \endlink).
+\i \c -project \BR
+ \e qmake output will be a project file (\link #ProjectfileMode Project file mode \endlink).
+\endlist
+
+\target MakefileMode
+\section3 Makefile Mode
+
+In Makefile mode \e qmake will generate a makefile. Additionally you may
+supply the following arguments in this mode:
+
+\list
+\i \c -after \BR
+ \e qmake will process assignments given on the commandline after
+ the specified files.
+\i \c -nocache \BR
+ \e qmake will ignore the .qmake.cache file.
+\i \c -nodepend \BR
+ \e qmake will not generate any dependency information.
+\i \c -cache file \BR
+ \e qmake will use \e file as the cache file, ignoring any other .qmake.cache file found
+\i \c -spec spec \BR
+ \e qmake will use \e spec as a path to platform-compiler information and QMAKESPEC will be ignored.
+\endlist
+
+The \c files argument can be a list of one or more project files, separated
+by spaces. You may also pass qmake assignments on the command line here and
+they will be processed before all files specified, for example:
+
+qmake -makefile -unix -o Makefile "CONFIG+=test" test.pro
+
+If however you are certain you want your variables processed after the
+the files specified, then you may pass the -after argument. When this
+is specified all assignments on the commandline after the -after
+option will be postponed until after the specified files are parsed.
+
+This will generate a Makefile, from test.pro with Unix pathnames. However
+many of these arguments aren't necessary as they are the default. Therefore
+the line can be simplified on Unix to:
+
+qmake "CONFIG+=test" test.pro
+
+
+\target ProjectfileMode
+\section3 Projectfile Mode
+
+In Projectfile mode \e qmake will generate a project file. Additionally, you may
+supply the following arguments in this mode:
+
+\list
+\i \c -r \BR
+ \e qmake will look through supplied directories recursively
+\i \c -nopwd \BR
+ \e qmake will not look in your current working directory for
+ source code and only use the specified \c files
+\endlist
+
+The \c files argument can be a list of files or directories. If a
+directory is specified, then it will be included in the \link
+#DEPENDPATH DEPENDPATH \endlink variable and relevant code from there
+will be included in the generated project file, if a file is given it
+will go into the correct variable depending on extension (i.e. .ui
+files go into FORMS, .cpp files go into SOURCES, etc). Here too you
+may pass assignments on the commandline, when doing so these
+assignments will be placed last in the generated .pro file.
+
+\target SystemVariables
+\section1 System Variables
+
+\list
+\i \link #FrequentlyUsedSystemVariables Frequently Used System Variables \endlink
+\i \link #RarelyUsedSystemVariables Rarely Used System Variables \endlink
+\endlist
+
+
+\target FrequentlyUsedSystemVariables
+\section2 Frequently Used System Variables
+
+The following variables are recognized by \e qmake and are used
+most frequently when creating project files.
+
+
+\target CONFIG
+\section3 CONFIG
+
+ The \c CONFIG variable specifies project configuration and
+compiler options. The values will be recognized internally by
+\e qmake and have special meaning. They are as follows.
+
+These \c CONFIG values control compilation flags:
+
+\list
+\i release - Compile with optimization enabled, ignored if
+ "debug" is specified
+\i debug - Compile with debug options enabled
+\i warn_on - The compiler should emit more warnings than normally, ignored if
+ "warn_off" is specified
+\i warn_off - The compiler should only emit severe warnings.
+\endlist
+
+These options define the application/library type:
+
+\list
+\i qt - The target is a Qt application/library and retquires the Qt header
+ files/library. The proper include and library paths for the Qt
+ library will automatically be added to the project.
+\i opengl - The target retquires the OpenGL (or Mesa)
+ headers/libraries. The proper include and library paths for
+ these libraries will automatically be added to the project.
+\i thread - The target is a multi-threaded application or library. The
+ proper defines and compiler flags will automatically be added to
+ the project.
+\i x11 - The target is a X11 application or library. The proper
+ include paths and libraries will automatically be added to the
+ project.
+\i windows - The target is a Win32 window application (app only). The
+ proper include paths,compiler flags and libraries will
+ automatically be added to the project.
+\i console - The target is a Win32 console application (app only). The
+ proper include paths, compiler flags and libraries will
+ automatically be added to the
+ project.
+\i dll - The target is a shared object/DLL.The proper
+ include paths, compiler flags and libraries will automatically be
+ added to the project.
+\i staticlib - The target is a static library (lib only). The proper
+ compiler flags will automatically be added to the project.
+\i plugin - The target is a plugin (lib only). This enables dll as well.
+\endlist
+
+These options are used to set the compiler flags:
+
+\list
+\i exceptions - Exception support is enabled
+\i rtti - RTTI support is enabled
+\i stl - STL support is enabled
+\endlist
+
+These options define specific things depending on the platform and/or template:
+
+\list
+\i flat - When using the vcapp template this will put all the source files into the source group and
+ the header files into the header group regardless of what directory they reside in. Turning this
+ option off will group the files within the source/header group depending on the directory they
+ reside. This is turned on by default.
+\endlist
+
+The \c CONFIG variable will also be checked when resolving
+scopes. You may assign anything to this variable.
+
+For example:
+
+\code
+CONFIG += qt console newstuff
+...
+newstuff {
+ SOURCES += new.cpp
+ HEADERS += new.h
+}
+\endcode
+
+
+\target DEFINES
+\section3 DEFINES
+
+\e qmake adds the values of this variable as compiler C
+preprocessor macros (-D option).
+
+For example:
+
+\code
+DEFINES += USE_MY_STUFF QT_DLL
+\endcode
+
+
+\target DEF_FILE
+\section3 DEF_FILE
+
+\e {This is only used on Windows when using the 'app' template}.
+
+Specifies a .def file to be included in the project.
+
+
+\target DESTDIR
+\section3 DESTDIR
+
+Specifies where to put the \link #TARGET target \endlink file.
+
+For example:
+
+\code
+ DESTDIR = ../../lib
+\endcode
+
+\target DLLDESTDIR
+\section3 DLLDESTDIR
+
+Specifies where to copy the \link #TARGET target \endlink dll.
+
+\target HEADERS
+\section3 HEADERS
+
+Defines the header files for the project.
+
+\e qmake will generate dependency information (unless -nodepend
+is specified on the \link #Commands command line \endlink) for the
+specified headers. \e qmake will also automatically detect if
+\e moc is retquired by the classes in these headers, and add the
+appropriate dependencies and files to the project for generating and
+linking the moc files.
+
+For example:
+
+\code
+HEADERS = myclass.h \
+ login.h \
+ mainwindow.h
+\endcode
+
+See also \link #SOURCES SOURCES \endlink.
+
+
+\target INCLUDEPATH
+\section3 INCLUDEPATH
+
+This variable specifies the #include directories which should be
+searched when compiling the project. Use ';' or a space as the
+directory separator.
+
+For example:
+
+\code
+ INCLUDEPATH = c:\msdev\include d:\stl\include
+\endcode
+
+
+\target FORMS
+\section3 FORMS
+
+This variable specifies the .ui files (see \link
+designer-manual.book Qt Designer \endlink) to be processed through \e uic
+before compiling. All dependencies, headers and source files retquired
+to build these .ui files will automatically be added to the project.
+
+For example:
+
+\code
+FORMS = mydialog.ui \
+ mywidget.ui \
+ myconfig.ui
+\endcode
+
+Note that forms should not be specified using the \c += operator because
+this syntax is not fully supported by \QD.
+
+
+\target LEXSOURCES
+\section3 LEXSOURCES
+
+This variable contains a list of lex source files. All
+dependencies, headers and source files will automatically be added to
+the project for building these lex files.
+
+For example:
+
+\code
+LEXSOURCES = lexer.l
+\endcode
+
+
+\target LIBS
+\section3 LIBS
+
+This variable contains a list of libraries to be linked into the project.
+If you are more comfortable with the Unix convension of -L/-l flags you are
+free to use them in a cross-platform manner and qmake will do the correct
+thing with these libraries on Windows (namely this means passing the full
+path of the library to the linker). The only limitation to this is the
+library must exist, for qmake to find which directory a -l lib lives in.
+
+For example:
+
+\code
+unix:LIBS += -lmath -L/usr/local/lib
+win32:LIBS += c:\mylibs\math.lib
+\endcode
+
+
+\target MOC_DIR
+\section3 MOC_DIR
+
+This variable specifies the directory where all intermediate moc
+files should be placed.
+
+For example:
+
+\code
+unix:MOC_DIR = ../myproject/tmp
+win32:MOC_DIR = c:\myproject\tmp
+\endcode
+
+
+\target OBJECTS_DIR
+\section3 OBJECTS_DIR
+
+This variable specifies the directory where all intermediate
+objects should be placed.
+
+For example:
+
+\code
+unix:OBJECTS_DIR = ../myproject/tmp
+win32:OBJECTS__DIR = c:\myproject\tmp
+\endcode
+
+
+\target UI_DIR
+\section3 UI_DIR
+
+This variable specifies the directory where all intermediate files from uic
+should be placed. This variable overrides both UI_SOURCES_DIR and
+UI_HEADERS_DIR.
+
+For example:
+
+\code
+unix:UI_DIR = ../myproject/ui
+win32:UI_DIR = c:\myproject\ui
+\endcode
+
+\target UI_HEADERS_DIR
+\section3 UI_HEADERS_DIR
+
+This variable specifies the directory where all declaration files (as
+generated by uic) should be placed.
+
+For example:
+
+\code
+unix:UI_HEADERS_DIR = ../myproject/ui/include
+win32:UI_HEADERS_DIR = c:\myproject\ui\include
+\endcode
+
+\target UI_SOURCES_DIR
+\section3 UI_SOURCES_DIR
+
+This variable specifies the directory where all implementation files (as generated
+by uic) should be placed.
+
+For example:
+
+\code
+unix:UI_SOURCES_DIR = ../myproject/ui/src
+win32:UI_SOURCES_DIR = c:\myproject\ui\src
+\endcode
+
+
+\target REQUIRES
+\section3 REQUIRES
+
+This is a special variable processed by \e qmake. If the
+contents of this variable do not appear in CONFIG by the time this
+variable is assigned, then a minimal makefile will be generated that
+states what dependencies (the values assigned to REQUIRES) are
+missing.
+
+This is mainly used in Qt's build system for building the examples.
+
+\target SOURCES
+\section3 SOURCES
+
+This variable contains the name of all source files in the project.
+
+For example:
+
+\code
+SOURCES = myclass.cpp \
+ login.cpp \
+ mainwindow.cpp
+
+\endcode
+
+See also \link #HEADERS HEADERS \endlink
+
+
+\section3 SUBDIRS
+
+This variable, when used with the 'subdirs'
+\link #TEMPLATE TEMPLATE \endlink contains the names of all subdirectories
+to look for a project file.
+
+For example:
+
+\code
+SUBDIRS = kernel \
+ tools
+\endcode
+
+
+\target TARGET
+\section3 TARGET
+
+This specifies the name of the target file.
+
+For example:
+
+\code
+TEMPLATE = app
+TARGET = myapp
+SOURCES = main.cpp
+\endcode
+
+The project file above would produce an executable named 'myapp' on
+unix and 'myapp.exe' on windows.
+
+
+
+\target TEMPLATE
+\section3 TEMPLATE
+
+This variable contains the name of the template to use when
+generating the project. The allowed values are:
+
+\list
+\i app - Creates a makefile for building applications (the default)
+\i lib - Creates a makefile for building libraries
+\i subdirs - Creates a makefile for building targets in subdirectories
+\i vcapp - \e {win32 only} Creates an application project file for
+Visual Studio
+\i vclib - \e {win32 only} Creates a library project file for Visual
+Studio
+
+\endlist
+
+For example:
+
+\code
+TEMPLATE = lib
+SOURCES = main.cpp
+TARGET = mylib
+\endcode
+
+The template can be overridden by specifying a new template type with the
+\c -t command line option. This overrides the template type \e after the .pro
+file has been processed. With .pro files that use the template type to
+determine how the project is built, it is necessary to declare TEMPLATE on
+the command line rather than use the \c -t option.
+
+
+
+\section3 VERSION
+
+This variable contains the version number of the library if the
+'lib' \link #TEMPLATE TEMPLATE \endlink is specified.
+
+For example:
+
+\code
+VERSION = 1.2.3
+\endcode
+
+\section3 DISTFILES
+
+This variable contains a list of files to be included in the dist
+target. This feature is supported by UnixMake specs only.
+
+For example:
+
+\code
+DISTFILES += ../program.txt
+\endcode
+
+
+\target YACCSOURCES
+\section3 YACCSOURCES
+
+This variable contains a list of yacc source files to be included
+in the project. All dependencies, headers and source files will
+automatically be included in the project.
+
+For example:
+
+\code
+YACCSOURCES = moc.y
+\endcode
+
+
+
+\target RarelyUsedSystemVariables
+\section2 Rarely Used System Variables
+
+The following variables are also recognized by \e qmake but are
+either internal or very rarely used.
+
+
+
+\target DESTDIR_TARGET
+\section3 DESTDIR_TARGET
+
+This variable is set internally by \e qmake, which is basically the DESTDIR variable with
+the TARGET variable appened at the end. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+\target DSP_TEMPLATE
+\section3 DSP_TEMPLATE
+
+This variable is set internally by \e qmake, which specifies where the dsp template file for
+basing generated dsp files is stored. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+\target LEXIMPLS
+\section3 LEXIMPLS
+
+This variable contains a list of lex implementation files. The value
+of this variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely
+needs to be modified.
+
+
+
+\target LEXOBJECTS
+\section3 LEXOBJECTS
+
+This variable contains the names of intermediate lex object
+files.The value of this variable is typically handled by
+\e qmake and rarely needs to be modified.
+
+
+\target LITERAL_HASH
+\section3 LITERAL_HASH
+
+This variable is used whenever a literal hash character (\c{#}) is needed in
+a variable declaration, perhaps as part of a file name or in a string passed
+to some external application.
+
+For example:
+
+\code
+# To include a literal hash character, use the $$LITERAL_HASH variable:
+urlPieces = http://doc.trolltech.com/3.3/qmake-manual-8.html LITERAL_HASH
+message($$join(urlPieces, $$LITERAL_HASH))
+\endcode
+
+By using \c LITERAL_HASH in this way, the \c # character can be used
+to construct a URL for the \c message() function to print to the console.
+
+
+\target MAKEFILE
+\section3 MAKEFILE
+
+This variable specifies the name of the makefile which
+\e qmake should use when outputting the dependency information
+for building a project. The value of this variable is typically
+handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\target MAKEFILE_GENERATOR
+\section3 MAKEFILE_GENERATOR
+
+This variable contains the name of the makefile generator to use
+when generating a makefile. The value of this variable is typically
+handled internally by \e qmake and rarely needs to be modified.
+
+
+\target OBJECTS
+\section3 OBJECTS
+
+This variable is generated from the \link #SOURCES SOURCES
+\endlink variable. The extension of each source file will have been
+replaced by .o (Unix) or .obj (Win32). The value of this variable is
+typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and
+rarely needs to be modified.
+
+\target OBJMOC
+\section3 OBJMOC
+
+This variable is set by \e qmake if files can be found that
+contain the Q_OBJECT macro. \c OBJMOC contains the
+name of all intermediate moc object files. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+\target PRECOMPILED_HEADER
+\section3 PRECOMPILED_HEADER
+
+This variable indicates the header file for creating a precompiled
+header file, to increase the compilation speed of a project.
+Precompiled headers are currently only supported on some platforms
+(Windows - all MSVC project types, Mac OS X - Xcode, Makefile,
+UNIX - gcc 3.3 and up).
+
+On other platforms, this variable has different meaning, as noted
+below.
+
+This variable contains a list of header files that retquire some
+sort of pre-compilation step (such as with moc). The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+\target QMAKE
+\section3 QMAKE
+
+This variable contains the name of the \e qmake program
+itself and is placed in generated makefiles. The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+
+\target QMAKESPEC_systemvariable
+\section3 QMAKESPEC
+
+This variable contains the name of the \e qmake
+configuration to use when generating makefiles. The value of this
+variable is typically handled by \e qmake and rarely needs to be modified.
+Use the \link #QMAKESPEC QMAKESPEC \endlink environment variable instead.
+
+
+
+
+\target QMAKE_APP_FLAG
+\section3 QMAKE_APP_FLAG
+
+This variable is empty unless the 'app'
+\link #TEMPLATE TEMPLATE \endlink is specified. The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified. Use the following instead:
+
+\code
+app {
+ #conditional code for 'app' template here
+}
+\endcode
+
+
+
+
+\target QMAKE_APP_OR_DLL
+\section3 QMAKE_APP_OR_DLL
+
+This variable is empty unless the 'app' or 'dll'
+\link #TEMPLATE TEMPLATE \endlink is specified. The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+
+\target QMAKE_AR_CMD
+\section3 QMAKE_AR_CMD
+
+\e {This is used on Unix platforms only}
+
+This variable contains the command for invoking the program which
+creates, modifies and extracts archives. The value of this variable is
+typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink
+and rarely needs to be modified.
+
+
+
+\target QMAKE_CFLAGS_DEBUG
+\section3 QMAKE_CFLAGS_DEBUG
+
+This variable contains the flags for the C compiler in debug mode.The value of this variable is
+typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink
+and rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_MT
+\section3 QMAKE_CFLAGS_MT
+
+This variable contains the compiler flags for creating a
+multi-threaded application or when the version of Qt that you link
+against is a multi-threaded statically linked library. The value of
+this variable is typically handled by \e qmake or
+\link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_MT_DBG
+\section3 QMAKE_CFLAGS_MT_DBG
+
+This variable contains the compiler flags for creating a debuggable
+multi-threaded application or when the version of Qt that you link
+against is a debuggable multi-threaded statically linked library. The
+value of this variable is typically handled by \e qmake or
+\link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_MT_DLL
+\section3 QMAKE_CFLAGS_MT_DLL
+
+\e {This is used on Windows only}
+
+This variable contains the compiler flags for creating a
+multi-threaded dll or when the version of Qt that you link
+against is a multi-threaded dll. The value of this variable is typically
+handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and
+rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_MT_DLLDBG
+\section3 QMAKE_CFLAGS_MT_DLLDBG
+
+\e {This is used on Windows only}
+
+This variable contains the compiler flags for creating a debuggable
+multi-threaded dll or when the version of Qt that you link
+against is a debuggable multi-threaded statically linked library.
+The value of this variable is typically handled by \e qmake or
+\link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_RELEASE
+\section3 QMAKE_CFLAGS_RELEASE
+
+This variable contains the compiler flags for creating a non-debuggable
+application. The value of this variable is typically
+handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and
+rarely needs to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_SHLIB
+\section3 QMAKE_CFLAGS_SHLIB
+
+\e {This is used on Unix platforms only}
+
+This variable contains the compiler flags for creating a shared
+library. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_THREAD
+\section3 QMAKE_CFLAGS_THREAD
+
+This variable contains the compiler flags for creating a multi-threaded
+application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CFLAGS_WARN_OFF
+\section3 QMAKE_CFLAGS_WARN_OFF
+
+This variable is not empty if the warn_off
+\link #TEMPLATE TEMPLATE \endlink option is specified. The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink
+and rarely needs to be modified.
+
+
+
+\target QMAKE_CFLAGS_WARN_ON
+\section3 QMAKE_CFLAGS_WARN_ON
+
+This variable is not empty if the warn_on
+\link #TEMPLATE TEMPLATE \endlink option is specified.
+The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CLEAN
+\section3 QMAKE_CLEAN
+
+This variable contains any files which are not generated files (such as moc and uic
+generated files) and object files that should be removed when using "make clean".
+
+
+
+\target QMAKE_CXXFLAGS_DEBUG
+\section3 QMAKE_CXXFLAGS_DEBUG
+
+This variable contains the C++ compiler flags for creating a debuggable
+application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+\target QMAKE_CXXFLAGS_MT
+\section3 QMAKE_CXXFLAGS_MT
+
+This variable contains the C++ compiler flags for creating a multi-threaded
+application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_MT_DBG
+\section3 QMAKE_CXXFLAGS_MT_DBG
+
+This variable contains the C++ compiler flags for creating a debuggable multi-threaded
+application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_MT_DLL
+\section3 QMAKE_CXXFLAGS_MT_DLL
+
+\c {This is used on Windows only}
+
+This variable contains the C++ compiler flags for creating a multi-threaded
+dll. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_MT_DLLDBG
+\section3 QMAKE_CXXFLAGS_MT_DLLDBG
+
+\c {This is used on Windows only}
+
+This variable contains the C++ compiler flags for creating a multi-threaded debuggable
+dll. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_RELEASE
+\section3 QMAKE_CXXFLAGS_RELEASE
+
+This variable contains the C++ compiler flags for creating an
+application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_SHLIB
+\section3 QMAKE_CXXFLAGS_SHLIB
+
+This variable contains the C++ compiler flags for creating a
+shared library. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_THREAD
+\section3 QMAKE_CXXFLAGS_THREAD
+
+This variable contains the C++ compiler flags for creating a
+multi-threaded application. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs
+to be modified.
+
+
+
+
+\target QMAKE_CXXFLAGS_WARN_OFF
+\section3 QMAKE_CXXFLAGS_WARN_OFF
+
+This variable contains the C++ compiler flags for suppressing compiler warnings.
+ The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\target QMAKE_CXXFLAGS_WARN_ON
+\section3 QMAKE_CXXFLAGS_WARN_ON
+
+This variable contains C++ compiler flags for generating compiler warnings.
+ The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_EXTENSION_SHLIB
+\section3 QMAKE_EXTENSION_SHLIB
+
+This variable contains the extention for shared libraries. The value of this
+variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink
+and rarely needs to be modified.
+
+
+
+
+\target QMAKE_FAILED_REQUIREMENTS
+\section3 QMAKE_FAILED_REQUIREMENTS
+
+This variable contains the list of retquirements that were failed to be met when
+\e qmake was used. For example, the sql module is needed and wasn't compiled into Qt. The
+value of this variable is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink
+and rarely needs to be modified.
+
+
+
+
+\target QMAKE_FILETAGS
+\section3 QMAKE_FILETAGS
+
+This variable contains the file tags needed to be entered into the makefile, such as SOURCES
+and HEADERS. The value of this variable is typically handled by \e qmake or
+\link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_INCDIR
+\section3 QMAKE_INCDIR
+
+This variable contains the location of all known header files to be added to
+INCLUDEPATH when building an application. The value of this variable is
+typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely
+needs to be modified.
+
+
+\target POST_TARGETDEPS
+\section3 POST_TARGETDEPS
+
+All libraries that the \link #TARGET target \endlink depends on can be
+listed in this variable. Some backends do not support this, these include
+MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is support
+internally by these build tools, this is usefull for explicitly listing
+dependant static libraries.
+
+This list will go after all builtin (and \link #PRE_TARGETDEPS
+$$PRE_TARGETDEPS \endlink) dependencies.
+
+
+\target PRE_TARGETDEPS
+\section3 PRE_TARGETDEPS
+
+All libraries that the \link #TARGET target \endlink depends on can be
+listed in this variable. Some backends do not support this, these include
+MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is support
+internally by these build tools, this is usefull for explicitly listing
+dependant static libraries.
+
+This list will go before all builtin dependencies.
+
+
+\target QMAKE_INCDIR_OPENGL
+\section3 QMAKE_INCDIR_OPENGL
+
+This variable contains the location of OpenGL header files to be added
+to INCLUDEPATH when building an application with OpenGL support. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\target QMAKE_INCDIR_QT
+\section3 QMAKE_INCDIR_QT
+
+This variable contains the location of all known header file
+paths to be added to INCLUDEPATH when building a Qt application. The value
+of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_INCDIR_THREAD
+\section3 QMAKE_INCDIR_THREAD
+
+This variable contains the location of all known header file
+paths to be added to INCLUDEPATH when building a multi-threaded application.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\target QMAKE_INCDIR_X11
+\section3 QMAKE_INCDIR_X11
+
+\e {This is used on Unix platforms only}
+
+This variable contains the location of X11 header file paths to be
+added to INCLUDEPATH when building a X11 application. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\target QMAKE_LFLAGS_CONSOLE
+\section3 QMAKE_LFLAGS_CONSOLE
+
+\e {This is used on Windows only}
+
+This variable contains link flags when building console
+programs. The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_LFLAGS_CONSOLE_DLL
+
+\e {This is used on Windows only}
+
+This variable contains link flags when building console
+dlls. The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_DEBUG
+
+This variable contains link flags when building debuggable applications. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_PLUGIN
+
+This variable contains link flags when building plugins. The value
+of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_QT_DLL
+
+This variable contains link flags when building programs that
+use the Qt library built as a dll. The value of this variable is
+typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_RELEASE
+
+This variable contains link flags when building applications for
+release. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_SHAPP
+
+This variable contains link flags when building applications which are using
+the 'app' template. The value of this variable is typically handled by
+\e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_SHLIB
+
+This variable contains link flags when building shared libraries
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_SONAME
+
+This variable specifies the link flags to set the name of shared objects,
+such as .so or .dll. The value of this variable is typically handled by \e
+qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\section3 QMAKE_LFLAGS_THREAD
+
+This variable contains link flags when building multi-threaded projects.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LFLAGS_WINDOWS
+
+\e {This is used on Windows only}
+
+This variable contains link flags when building windows projects.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_LFLAGS_WINDOWS_DLL
+
+\e {This is used on Windows only}
+
+This variable contains link flags when building windows dll projects.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_LIBDIR
+
+This variable contains the location of all known library
+directories.The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBDIR_FLAGS
+
+\e {This is used on Unix platforms only}
+
+This variable contains the location of all library
+directory with -L prefixed. The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\section3 VPATH
+
+This variable tells \e qmake where to search for files it cannot
+open. With this you may tell \e qmake where it may look for things
+like SOURCES, and if it finds an entry in SOURCES that cannot be
+opened it will look through the entire VPATH list to see if it can
+find the file on its own.
+
+See also \link #DEPENDPATH DEPENDPATH \endlink.
+
+\target DEPENDPATH
+\section3 DEPENDPATH
+
+This variable contains the list of all directories to look in to
+resolve dependencies. This will be used when crawling through
+'included' files.
+
+
+\section3 QMAKE_LIBDIR_OPENGL
+
+This variable contains the location of the OpenGL library
+directory.The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBDIR_QT
+
+This variable contains the location of the Qt library
+directory.The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBDIR_X11
+
+\e {This is used on Unix platforms only}
+
+This variable contains the location of the X11 library
+directory.The value of this variable is typically handled by
+\e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+\section3 QMAKE_LIBS
+
+This variable contains all project libraries. The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_LIBS_CONSOLE
+
+\e {This is used on Windows only}
+
+This variable contains all project libraries that should be linked against
+when building a console application. The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\section3 QMAKE_LIBS_OPENGL
+
+This variable contains all OpenGL libraries. The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_OPENGL_QT
+
+This variable contains all OpenGL Qt libraries.The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_QT
+
+This variable contains all Qt libraries.The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_QT_DLL
+
+\e {This is used on Windows only}
+
+This variable contains all Qt libraries when Qt is built as a dll. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_QT_OPENGL
+
+This variable contains all the libraries needed to link against if
+OpenGL support is turned on. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\section3 QMAKE_LIBS_QT_THREAD
+
+This variable contains all the libraries needed to link against if
+thread support is turned on. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_RT
+
+\e {This is used with Borland compilers only}
+
+This variable contains the runtime library needed to link against when
+building an application. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_RTMT
+
+\e {This is used with Borland compilers only}
+
+This variable contains the runtime library needed to link against when
+building a multi-threaded application. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\section3 QMAKE_LIBS_THREAD
+
+\e {This is used on Unix platforms only}
+
+This variable contains all libraries that need to be linked against
+when building a multi-threaded application. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_WINDOWS
+
+\e {This is used on Windows only}
+
+This variable contains all windows libraries.The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_X11
+
+\e {This is used on Unix platforms only}
+
+This variable contains all X11 libraries.The value of this
+variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIBS_X11SM
+
+\e {This is used on Unix platforms only}
+
+This variable contains all X11 session management libraries. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_LIB_FLAG
+
+This variable is not empty if the 'lib' template is specified. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\section3 QMAKE_LINK_SHLIB_CMD
+
+This variable contains the command to execute when creating a
+shared library. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_POST_LINK
+
+This variable contains the command to execute after linking the TARGET
+together. This variable is normally empty and therefore nothing is
+executed, additionally some backends will not support this - mostly only
+Makefile backends.
+
+
+
+\section3 QMAKE_PRE_LINK
+
+This variable contains the command to execute before linking the TARGET
+together. This variable is normally empty and therefore nothing is
+executed, additionally some backends will not support this - mostly only
+Makefile backends.
+
+
+
+\section3 QMAKE_LN_SHLIB
+
+This variable contains the command to execute when creating a link
+to a shared library. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_MAKEFILE
+
+This variable contains the name of the makefile to create. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+
+\section3 QMAKE_MOC_SRC
+
+This variable contains the names of all moc source files to
+generate and include in the project. The value of this variable is
+typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_QMAKE
+
+This variable contains the location of qmake if it is not in the path.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 QMAKE_QT_DLL
+
+This variable is not empty if Qt was built as a dll. The
+value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+\section3 QMAKE_RUN_CC
+
+This variable specifies the individual rule needed to build an object.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+\section3 QMAKE_RUN_CC_IMP
+
+This variable specifies the individual rule needed to build an object.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\section3 QMAKE_RUN_CXX
+
+This variable specifies the individual rule needed to build an object.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\section3 QMAKE_RUN_CXX_IMP
+
+This variable specifies the individual rule needed to build an object.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+\section3 QMAKE_TARGET
+
+This variable contains the name of the project target. The value of
+this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 QMAKE_UIC
+
+This variable contains the location of uic if it is not in the path.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+It can be used to specify arguments to uic as well, such as additional plugin
+paths. For example:
+
+\code
+ QMAKE_UIC = uic -L /path/to/plugin
+\endcode
+
+
+
+\section3 RC_FILE
+
+This variable contains the name of the resource file for the application.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+
+\section3 RES_FILE
+
+This variable contains the name of the resource file for the application.
+The value of this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\section3 SRCMOC
+
+This variable is set by \e qmake if files can be found that
+contain the Q_OBJECT macro. \c SRCMOC contains the
+name of all the generated moc files. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+\section3 TARGET_EXT
+
+This variable specifies the target's extension. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+
+\section3 TARGET_x
+
+This variable specifies the target's extension with a major version number. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+\section3 TARGET_x.y.z
+
+This variable specifies the target's extension with version number. The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+\section3 UICIMPLS
+
+This variable contains a list of the generated implementation files by UIC.
+The value of this variable
+is typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and rarely needs to be
+modified.
+
+
+
+
+
+\section3 UICOBJECTS
+
+This variable is generated from the UICIMPLS variable. The extension of each
+file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is
+typically handled by \e qmake or \link #QMAKESPEC qmake.conf \endlink and
+rarely needs to be modified.
+
+
+
+\section3 VER_MAJ
+
+This variable contains the major version number of the library, if the
+'lib' \link #TEMPLATE template \endlink is specified.
+
+
+
+
+
+\section3 VER_MIN
+
+This variable contains the minor version number of the library, if the
+'lib' \link #TEMPLATE template \endlink is specified.
+
+
+
+
+
+\section3 VER_PAT
+
+This variable contains the patch version number of the library, if the
+'lib' \link #TEMPLATE template \endlink is specified.
+
+
+
+\section3 QMAKE_EXT_MOC
+
+This variable changes the extention used on included moc files.
+
+See also \link #Extensions File Extensions \endlink.
+
+
+
+\section3 QMAKE_EXT_UI
+
+This variable changes the extention used on /e Designer UI files.
+
+See also \link #Extensions File Extensions \endlink.
+
+
+
+\section3 QMAKE_EXT_PRL
+
+This variable changes the extention used on created PRL files.
+
+See also \link #Extensions File Extensions \endlink,
+ \link #LibDepend Library Dependencies \endlink.
+
+
+
+\section3 QMAKE_EXT_LEX
+
+This variable changes the extention used on files given to lex.
+
+See also \link #Extensions File Extensions \endlink,
+ \link #LEXSOURCES LEXSOURCES \endlink.
+
+
+
+\section3 QMAKE_EXT_YACC
+This variable changes the extention used on files given to yacc.
+
+See also \link #Extensions File Extensions \endlink,
+ \link #LEXSOURCES YACCSOURCES \endlink.
+
+
+
+\section3 QMAKE_EXT_OBJ
+
+This variable changes the extention used on generated object files.
+
+See also \link #Extensions File Extensions \endlink.
+
+
+\section3 QMAKE_EXT_CPP
+
+This variable changes the interpretation of all suffixes in this
+list of values as files of type C++ source code.
+
+See also \link #Extensions File Extensions \endlink.
+
+
+\section3 QMAKE_EXT_H
+
+This variable changes the interpretation of all suffixes in this
+list of values as files of type C header files.
+
+See also \link #Extensions File Extensions \endlink.
+
+
+\section3 YACCIMPLS
+
+This variable contains a list of yacc source files. The value of
+this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+
+
+\section3 YACCOBJECTS
+
+This variable contains a list of yacc object files. The value of
+this variable is typically handled by \e qmake or
+ \link #QMAKESPEC qmake.conf \endlink and rarely needs to be modified.
+
+
+\target Functions
+\section1 Functions
+
+\e qmake recognizes the following functions:
+
+
+
+\section2 include( filename )
+
+This function will include the contents of \e filename into the
+current project at the point where was included. The function succeeds
+if \e filename was included, otherwise it fails. You can check the
+return value of this function using a
+scope.
+
+For example:
+
+\code
+include( shared.pri )
+OPTIONS = standard custom
+!include( options.pri ) {
+ message( "No custom build options specified" )
+ OPTIONS -= custom
+}
+\endcode
+
+\section2 exists( file )
+
+This function will test if \e file exists. If the file exists, then it will succeed; otherwise it will
+fail.
+You can specify a regular expression in file and it will succeed if any file
+matches the regular expression specified.
+
+For example:
+\code
+exists( $(QTDIR)/lib/libtqt-mt* ) {
+ message( "Configuring for multi-threaded Qt..." )
+ CONFIG += thread
+}
+\endcode
+
+\section2 contains( variablename, value )
+
+This function will succeed if the variable \e variablename
+contains the value \e value. You can check the return value of this
+function using a scope.
+
+For example:
+
+\code
+contains( drivers, network ) {
+ # drivers contains 'network'
+ message( "Configuring for network build..." )
+ HEADERS += network.h
+ SOURCES += network.cpp
+}
+\endcode
+
+\section2 count( variablename, number )
+
+This function will succeed if the variable \e variablename
+contains \e number elements, otherwise it will fail. You can check
+the return value of this function using a
+scope.
+
+For example:
+
+\code
+MYVAR = one two three
+count( MYVAR, 3 ) {
+ # always true
+}
+\endcode
+
+\section2 infile( filename, var, val )
+
+This function will succeed if the file \e filename (when parsed
+by qmake itself) contains the variable \e var with a value of
+\e val. You may also not pass in a third argument (\e val) and the
+function will only test if \e var has been assigned to in the file.
+
+\section2 isEmpty( variablename )
+
+This function will succeed if the variable \e variablename is
+empty (same as \c count(variable, 0)).
+
+\section2 system( command )
+
+This function will execute \c command in a secondary shell and will
+succeed if the command exits with an exit status of 1. You can check the
+return value of this function using a scope.
+
+For example:
+
+\code
+ system(ls /bin):HAS_BIN=FALSE
+\endcode
+
+\section2 message( string )
+
+This function will always succeed, and will display the given
+\e string to the user.
+
+\section2 error( string )
+
+This function will never return a value. It will display the given \e
+string to the user, and then exit \e qmake. This function should
+only be used for very fatal configurations.
+
+For example:
+
+\code
+ release:debug:error(You can't have release and debug at the same time!)
+\endcode
+
+\target Properties
+\section1 Properties
+
+\e qmake has a system of persistant information, this allows you to
+'set' a variable in qmake once, and each time qmake is invoked this
+value can be queried. Use the following to set a property in qmake:
+
+\code
+qmake -set VARIABLE VALUE
+\endcode
+
+To retrieve this information back from qmake you can do:
+
+\code
+qmake -query VARIABLE
+qmake -query #queries all current VARIABLE/VALUE pairs..
+\endcode
+
+This information will be saved into a QSettings object (meaning it
+will be stored in different places for different platforms). As
+VARIABLE is versioned as well, you can set one value in an older
+version of qmake, and newer versions will retrieve this value, however
+if you -set VARIABLE into a newer version of qmake the older version
+will not use this value. You can however query a specific version of a
+variable if you prefix that version of qmake to VARIABLE, as in:
+
+\code
+qmake -query "1.06a/VARIABLE"
+\endcode
+
+qmake also has the notion of 'builtin' properties, for example you can
+query the installation of Qt for this version of qmake with the
+QT_INSTALL_PREFIX property:
+
+\code
+qmake -query "QT_INSTALL_PREFIX"
+\endcode
+
+These builtin properties cannot have a version prefixed to them as
+they are not versioned and each qmake will have its own notion of
+these values. The list below outlines the builtin properties:
+
+\list
+\i QT_INSTALL_PREFIX - Where the version of Qt this qmake is built for resides
+\i QT_INSTALL_DATA - Where data for this version of Qt resides
+\i QMAKE_VERSION - The current version of qmake
+\endlist
+
+Finally, these values can be queried in a project file with a special
+notation such as:
+
+\code
+QMAKE_VERS = $$[QMAKE_VERSION]
+\endcode
+
+\target Environment
+\section1 Environment Variables and Configuration
+
+\target QMAKESPEC
+\section2 QMAKESPEC
+
+\e qmake retquires a platform and compiler description file which
+contains many default values used to generate appropriate makefiles.
+The standard Qt distribution comes with many of these files, located
+in the 'mkspecs' subdirectory of the Qt installation.
+
+The QMAKESPEC environment variable can contain any of the following:
+
+\list
+\i A complete path to a directory containing a qmake.conf file. In this case \e qmake will open the qmake.conf file from within that directory. If the file does not exist, \e qmake will exit with an error.
+\i The name of a platform-compiler combination. In this case, \e qmake will search in the directory specified by the QTDIR environment variable.
+\endlist
+
+Note: the QMAKESPEC path will automatically be added to the
+\link #INCLUDEPATH INCLUDEPATH \endlink system variable.
+
+\target INSTALLS
+\section2 INSTALLS
+
+It is common on UNIX to be able to install from the same utility as
+you build with (e.g make install). For this \e qmake has introduce the
+concept of an install set. The notation for this is tquite simple,
+first you fill in an "object" in qmake for example:
+
+\code
+ documentation.path = /usr/local/program/doc
+ documentation.files = docs/*
+\endcode
+
+In this way you are telling \e qmake several things about this
+install, first that you plan to install to /usr/local/program/doc (the
+path member), second that you plan to copy everything in the docs
+directory. Once this is done you may insert it in the install list:
+
+\code
+ INSTALLS += documentation
+\endcode
+
+Now \e qmake will take over making sure the correct things are copied
+to the specified places. If however you retquire greater control you
+may use the 'extra' member of the object:
+
+\code
+ unix:documentation.extra = create_docs; mv master.doc toc.doc
+\endcode
+
+Then qmake will run the things in extra (this is of course platform
+specific, so you may need to test for your platform first, this case
+we test for unix). Then it will do the normal processings of the files
+member. Finally if you appened a builtin install to INSTALLS \e qmake
+(and do not specify a files or extra member) will decide what needs to
+be copied for you, currently the only supported builtin is target:
+
+\code
+ target.path = /usr/local/myprogram
+ INSTALLS += target
+\endcode
+
+With this \e qmake will know what you plan need copied, and do this
+for you.
+
+\target cache
+\section2 Cache File
+
+The cache file (mentioned above in the options) is a special file \e qmake
+will read to find settings not specified in the \c qmake.conf file, the
+.pro file, or the command line. If \c -nocache is not specified, \e qmake
+will try to find a file called \c .qmake.cache in parent directories. If
+it fails to find this file, it will silently ignore this step of
+processing.
+
+\target LibDepend
+\section2 Library Dependencies
+
+Often when linking against a library \e qmake relies on the underlying
+platform to know what other libraries this library links against, and
+lets the platform pull them in. In many cases, however, this is not
+sufficent. For example when statically linking a library there are no
+libraries linked against, and therefore no dependencies to those
+libraries are created - however an application that later links
+against this library will need to know where to find the symbols that
+the linked in library will retquire. To help with this situation \e
+qmake will follow a library's dependencies when it feels appropriate,
+however this behaviour must be enabled in \e qmake. To enable retquires
+two steps. First, you must enable it in the library - to do this you
+must tell \e qmake to save information about this library:
+
+\code
+ CONFIG += create_prl
+\endcode
+
+This is only relevant to the lib template, and will be ignored for all
+others. When this option is enabled \e qmake will create a file
+(called a .prl file) which will save some meta information about the
+library. This metafile is itself just a qmake project file, but with
+all internal variables. You are free to view this file, and if deleted
+\e qmake will know to recreate it when necesary (either when the .pro
+file is later read, or if a dependent library (described below) has
+changed). When installing this library (by using target in INSTALLS,
+above) \e qmake will automatically copy the .prl file to your install
+path.
+
+The second step to enabling this processing is to turn on reading of
+the meta information created above:
+
+\code
+ CONFIG += link_prl
+\endcode
+
+When this is turned on \e qmake will process all libraries linked to,
+and find their meta information. With this meta information \e qmake
+will figure out what is relevant to linking, specifically it will add
+to your list of DEFINES as well as LIBS. Once \e qmake has processed
+this file, it will then look through the newly introduced LIBS and
+find their dependent .prl files, and continue until all libraries have
+been resolved. At this point the makefile is created as usual, and the
+libraries are linked explicity against your program.
+
+The internals of the .prl file are left closed so they can easily
+change later. It is not designed to be changed by hand however, and
+should only be created by \e qmake - these .prl files should also not
+be transfered from operating system to operating system as they may be
+platform dependent (like a makefile).
+
+\target Extensions
+\section2 File Extensions
+
+Under normal circumstances \e qmake will try to use appropriate file extensions
+for your platform. There may be times, however, that you would like to override
+the behavior of these extensions. To do this, you must modify builtin variables
+in your .pro file, which will in turn changes \e qmake's interpretation of these
+files. You may do this as:
+
+\code
+ QMAKE_EXT_MOC = .mymoc
+\endcode
+
+The variables are as follows:
+
+\list
+\i QMAKE_EXT_MOC - This modifies the extension placed on included moc files.
+\i QMAKE_EXT_UI - This modifies the extension used for designer UI files (usually in FORMS).
+\i QMAKE_EXT_PRL - This modifies the extension placed on
+ \link #LibDepend library dependency files \endlink.
+\i QMAKE_EXT_LEX - This changes the suffix used in files (usually in LEXSOURCES).
+\i QMAKE_EXT_YACC - This changes the suffix used in files (usually in YACCSOURCES).
+\i QMAKE_EXT_OBJ - This changes the suffix used on generated object files.
+\endlist
+
+All the above accept just the first value, so you must assign to it one value that
+will be used through your makefile. There are two variables that accept a list of values,
+they are:
+
+\list
+\i QMAKE_EXT_CPP - Changes interpretation all files with these suffixes to be
+ C++ source files.
+\i QMAKE_EXT_H - Changes interpretation all files with these suffixes to be
+ C header files.
+\endlist
+
+
+\target Customizing
+\section2 Customizing Makefile Output
+
+qmake often tries to be all things to all build tools, this is often less
+than ideal when you really need to run special platform dependent
+commands. This can be achieved with specific instructions to the different
+qmake backends (currently this is only supported by the UNIX \link
+#MAKEFILE_GENERATOR generator \endlink).
+
+The interfaces to customizing the Makefile are done through "objects" as in
+other places in qmake. The notation for this is tquite simple, first you
+fill in an "object" in qmake for example:
+
+\code
+ mytarget.target = .buildfile
+ mytarget.commands = touch $$mytarget.target
+ mytarget.depends = mytarget2
+
+ mytarget2.commands = @echo Building $$mytarget.target
+\endcode
+
+The information above defines a qmake target called mytarget which contains
+a Makefile target called .buildfile, .buildfile is generated by 'touch
+.buildfile', and finally that this Makefile target depends on the qmake
+target mytarget2. Additionally we've defined the qmake target mytarget2
+which simply echo's something to stdout.
+
+The final step to making use of the above is to instruct qmake that this is
+actually an object used by the target building parts of qmake by:
+
+\code
+QMAKE_EXTRA_UNIX_TARGETS += mytarget mytarget2
+\endcode
+
+This is all you need to do to actually build custom targets in qmake, of
+course you may want to tie one of these targets to actually building the
+\link #TARGET qmake build target \endlink. To do this, you simply need to
+include your Makefile target in the list of \link #PRE_TARGETDEPS PRE_TARGETDEPS
+\endlink.
+
+For convenience there is also a method of customizing (UNIX) projects
+for generic new compilers (or even preprocessors).
+
+\code
+new_moc.output = moc_${QMAKE_FILE_BASE}.cpp
+new_moc.commands = moc ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT}
+new_moc.depends = g++ -E -M ${QMAKE_FILE_NAME} | sed "s,^.*: ,,"
+new_moc.input = NEW_HEADERS
+QMAKE_EXTRA_UNIX_COMPILERS += new_moc
+\endcode
+
+With this you can create a new moc for qmake, the commands will be
+executed over all arguments given to a NEW_HEADERS variable (from the
+input variable), and write to output (and automatically hand this
+filename to the compiler to be linked into your target). Additionally
+qmake will execute depends to generate dependency information and
+place this in the project as well.
+
+These commands can easily be placed into a cache file, and subsequent
+.pro files can give several arguments to NEW_HEADERS.