doc/src/snippets/code/doc_src_qmake-manual.qdoc
changeset 7 f7bc934e204c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc	Wed Mar 31 11:06:36 2010 +0300
@@ -0,0 +1,1005 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [0]
+make all
+//! [0]
+
+
+//! [1]
+CONFIG += qt thread debug
+//! [1]
+
+
+//! [2]
+CONFIG += qt
+QT += network xml
+//! [2]
+
+
+//! [3]
+QT = network xml # This will omit the core and gui modules.
+//! [3]
+
+
+//! [4]
+QT -= gui # Only the core module is used.
+//! [4]
+
+
+//! [5]
+CONFIG += link_pkgconfig
+PKGCONFIG += ogg dbus-1
+//! [5]
+
+
+//! [6]
+LIBS += -L/usr/local/lib -lmath
+//! [6]
+
+
+//! [7]
+INCLUDEPATH = c:/msdev/include d:/stl/include
+//! [7]
+
+
+//! [8]
+qmake [mode] [options] files
+//! [8]
+
+
+//! [9]
+qmake -makefile [options] files
+//! [9]
+
+
+//! [10]
+qmake -makefile -unix -o Makefile "CONFIG+=test" test.pro
+//! [10]
+
+
+//! [11]
+qmake "CONFIG+=test" test.pro
+//! [11]
+
+
+//! [12]
+qmake -project [options] files
+//! [12]
+
+
+//! [13]
+qmake -spec macx-g++
+//! [13]
+
+
+//! [14]
+QMAKE_LFLAGS += -F/path/to/framework/directory/
+//! [14]
+
+
+//! [15]
+LIBS += -framework TheFramework
+//! [15]
+
+
+//! [16]
+TEMPLATE = lib
+CONFIG += lib_bundle
+//! [16]
+
+
+//! [17]
+FRAMEWORK_HEADERS.version = Versions
+FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
+FRAMEWORK_HEADERS.path = Headers
+QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS
+//! [17]
+
+
+//! [18]
+CONFIG += x86 ppc
+//! [18]
+
+
+//! [19]
+qmake -spec macx-xcode project.pro
+//! [19]
+
+
+//! [20]
+qmake -tp vc
+//! [20]
+
+
+//! [21]
+qmake -tp vc -r
+//! [21]
+
+
+//! [22]
+CONFIG -= embed_manifest_exe
+//! [22]
+
+
+//! [23]
+CONFIG -= embed_manifest_dll
+//! [23]
+
+
+//! [24]
+make all
+//! [24]
+
+
+//! [25]
+build_pass:CONFIG(debug, debug|release) {
+    unix: TARGET = $$join(TARGET,,,_debug)
+    else: TARGET = $$join(TARGET,,,d)
+}
+//! [25]
+
+
+//! [26]
+CONFIG += qt console newstuff
+...
+newstuff {
+    SOURCES += new.cpp
+    HEADERS += new.h
+}
+//! [26]
+
+
+//! [27]
+DEFINES += USE_MY_STUFF QT_DLL
+//! [27]
+
+
+//! [28]
+myFiles.sources = path\*.png
+DEPLOYMENT += myFiles
+//! [28]
+
+
+//! [29]
+myFiles.sources = path\file1.ext1 path2\file2.ext1 path3\*
+myFiles.path = \some\path\on\device
+someother.sources = C:\additional\files\*
+someother.path = \myFiles\path2
+DEPLOYMENT += myFiles someother
+//! [29]
+
+
+//! [30]
+DESTDIR = ../../lib
+//! [30]
+
+
+//! [31]
+DISTFILES += ../program.txt
+//! [31]
+
+
+//! [32]
+FORMS = mydialog.ui \
+    mywidget.ui \
+        myconfig.ui
+//! [32]
+
+
+//! [33]
+FORMS3 = my_uic3_dialog.ui \
+     my_uic3_widget.ui \
+         my_uic3_config.ui
+//! [33]
+
+
+//! [34]
+HEADERS = myclass.h \
+          login.h \
+          mainwindow.h
+//! [34]
+
+
+//! [35]
+INCLUDEPATH = c:/msdev/include d:/stl/include
+//! [35]
+
+
+//! [36]
+target.path += $$[QT_INSTALL_PLUGINS]/imageformats
+INSTALLS += target
+//! [36]
+
+
+//! [37]
+LEXSOURCES = lexer.l
+//! [37]
+
+
+//! [38]
+unix:LIBS += -L/usr/local/lib -lmath
+win32:LIBS += c:/mylibs/math.lib
+//! [38]
+
+
+//! [39]
+CONFIG += no_lflags_merge
+//! [39]
+
+
+//! [40]
+unix:MOC_DIR = ../myproject/tmp
+win32:MOC_DIR = c:/myproject/tmp
+//! [40]
+
+
+//! [41]
+unix:OBJECTS_DIR = ../myproject/tmp
+win32:OBJECTS_DIR = c:/myproject/tmp
+//! [41]
+
+
+//! [42]
+app {
+    # Conditional code for 'app' template here
+}
+//! [42]
+
+
+//! [43]
+FRAMEWORK_HEADERS.version = Versions
+FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
+FRAMEWORK_HEADERS.path = Headers
+QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS
+//! [43]
+
+
+//! [44]
+QMAKE_BUNDLE_EXTENSION = .myframework
+//! [44]
+
+
+//! [45]
+QMAKE_RESOURCE_FLAGS += -threshold 0 -compress 9
+//! [45]
+
+
+//! [46]
+QMAKE_UIC = uic -L /path/to/plugin
+//! [46]
+
+
+//! [47]
+QT -= gui # Only the core module is used.
+//! [47]
+
+
+//! [48]
+unix:RCC_DIR = ../myproject/resources
+win32:RCC_DIR = c:/myproject/resources
+//! [48]
+
+
+//! [49]
+SOURCES = myclass.cpp \
+      login.cpp \
+      mainwindow.cpp
+//! [49]
+
+
+//! [50]
+SUBDIRS = kernel \
+          tools
+//! [50]
+
+
+//! [51]
+CONFIG += ordered
+//! [51]
+
+
+//! [52]
+TEMPLATE = app
+TARGET = myapp
+SOURCES = main.cpp
+//! [52]
+
+
+//! [53]
+TEMPLATE = lib
+SOURCES = main.cpp
+TARGET = mylib
+//! [53]
+
+
+//! [54]
+unix:UI_DIR = ../myproject/ui
+win32:UI_DIR = c:/myproject/ui
+//! [54]
+
+
+//! [55]
+unix:UI_HEADERS_DIR = ../myproject/ui/include
+win32:UI_HEADERS_DIR = c:/myproject/ui/include
+//! [55]
+
+
+//! [56]
+unix:UI_SOURCES_DIR = ../myproject/ui/src
+win32:UI_SOURCES_DIR = c:/myproject/ui/src
+//! [56]
+
+
+//! [57]
+VERSION = 1.2.3
+//! [57]
+
+
+//! [58]
+YACCSOURCES = moc.y
+//! [58]
+
+
+//! [59]
+FILE = /etc/passwd
+FILENAME = $$basename(FILE) #passwd
+//! [59]
+
+
+//! [60]
+CONFIG = debug
+CONFIG += release
+CONFIG(release, debug|release):message(Release build!) #will print
+CONFIG(debug, debug|release):message(Debug build!) #no print
+//! [60]
+
+
+//! [61]
+contains( drivers, network ) {
+    # drivers contains 'network'
+    message( "Configuring for network build..." )
+    HEADERS += network.h
+    SOURCES += network.cpp
+}
+//! [61]
+
+
+//! [62]
+error(An error has occurred in the configuration process.)
+//! [62]
+
+
+//! [63]
+exists( $(QTDIR)/lib/libqt-mt* ) {
+      message( "Configuring for multi-threaded Qt..." )
+      CONFIG += thread
+}
+//! [63]
+
+
+//! [64]
+MY_VAR = one two three four
+MY_VAR2 = $$join(MY_VAR, " -L", -L) -Lfive
+MY_VAR3 = $$member(MY_VAR, 2) $$find(MY_VAR, t.*)
+//! [64]
+
+
+//! [65]
+LIST = 1 2 3
+for(a, LIST):exists(file.$${a}):message(I see a file.$${a}!)
+//! [65]
+
+
+//! [66]
+include( shared.pri )
+OPTIONS = standard custom
+!include( options.pri ) {
+    message( "No custom build options specified" )
+OPTIONS -= custom
+}
+//! [66]
+
+
+//! [67]
+isEmpty( CONFIG ) {
+CONFIG += qt warn_on debug
+}
+//! [67]
+
+
+//! [68]
+message( "This is a message" )
+//! [68]
+
+
+//! [69]
+!build_pass:message( "This is a message" )
+//! [69]
+
+
+//! [70]
+This is a test.
+//! [70]
+
+
+//! [71]
+system(ls /bin):HAS_BIN=FALSE
+//! [71]
+
+
+//! [72]
+UNAME = $$system(uname -s)
+contains( UNAME, [lL]inux ):message( This looks like Linux ($$UNAME) to me )
+//! [72]
+
+
+//! [73]
+ARGS = 1 2 3 2 5 1
+ARGS = $$unique(ARGS) #1 2 3 5
+//! [73]
+
+
+//! [74]
+qmake -set VARIABLE VALUE
+//! [74]
+
+
+//! [75]
+qmake -query VARIABLE
+qmake -query #queries all current VARIABLE/VALUE pairs..
+//! [75]
+
+
+//! [76]
+qmake -query "1.06a/VARIABLE"
+//! [76]
+
+
+//! [77]
+qmake -query "QT_INSTALL_PREFIX"
+//! [77]
+
+
+//! [78]
+QMAKE_VERS = $$[QMAKE_VERSION]
+//! [78]
+
+
+//! [79]
+documentation.path = /usr/local/program/doc
+documentation.files = docs/*
+//! [79]
+
+
+//! [80]
+INSTALLS += documentation
+//! [80]
+
+
+//! [81]
+unix:documentation.extra = create_docs; mv master.doc toc.doc
+//! [81]
+
+
+//! [82]
+target.path = /usr/local/myprogram
+INSTALLS += target
+//! [82]
+
+
+//! [83]
+CONFIG += create_prl
+//! [83]
+
+
+//! [84]
+CONFIG += link_prl
+//! [84]
+
+
+//! [85]
+QMAKE_EXT_MOC = .mymoc
+//! [85]
+
+
+//! [86]
+mytarget.target = .buildfile
+mytarget.commands = touch $$mytarget.target
+mytarget.depends = mytarget2
+
+mytarget2.commands = @echo Building $$mytarget.target
+//! [86]
+
+
+//! [87]
+QMAKE_EXTRA_TARGETS += mytarget mytarget2
+//! [87]
+
+
+//! [88]
+new_moc.output  = moc_${QMAKE_FILE_BASE}.cpp
+new_moc.commands = moc ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT}
+new_moc.depend_command = g++ -E -M ${QMAKE_FILE_NAME} | sed "s,^.*: ,,"
+new_moc.input = NEW_HEADERS
+QMAKE_EXTRA_COMPILERS += new_moc
+//! [88]
+
+
+//! [89]
+TARGET = myapp
+//! [89]
+
+
+//! [90]
+DEFINES += QT_DLL
+//! [90]
+
+
+//! [91]
+DEFINES -= QT_DLL
+//! [91]
+
+
+//! [92]
+DEFINES *= QT_DLL
+//! [92]
+
+
+//! [93]
+DEFINES ~= s/QT_[DT].+/QT
+//! [93]
+
+
+//! [94]
+EVERYTHING = $$SOURCES $$HEADERS
+message("The project contains the following files:")
+message($$EVERYTHING)
+//! [94]
+
+
+//! [95]
+win32:DEFINES += QT_DLL
+//! [95]
+
+
+//! [96]
+win32:xml {
+    message(Building for Windows)
+    SOURCES += xmlhandler_win.cpp
+} else:xml {
+    SOURCES += xmlhandler.cpp
+} else {
+    message("Unknown configuration")
+}
+//! [96]
+
+
+//! [97]
+MY_VARIABLE = value
+//! [97]
+
+
+//! [98]
+MY_DEFINES = $$DEFINES
+//! [98]
+
+
+//! [99]
+MY_DEFINES = $${DEFINES}
+//! [99]
+
+
+//! [100]
+TARGET = myproject_$${TEMPLATE}
+//! [100]
+
+
+//! [101]
+target.path = $$[QT_INSTALL_PLUGINS]/designer
+INSTALLS += target
+//! [101]
+
+
+//! [102]
+defineReplace(functionName){
+    #function code
+}
+//! [102]
+
+
+//! [103]
+CONFIG += myfeatures
+//! [103]
+
+
+//! [104]
+// Add C includes here
+
+#if defined __cplusplus
+// Add C++ includes here
+#include <stdlib>
+#include <iostream>
+#include <vector>
+#include <QApplication> // Qt includes
+#include <QPushButton>
+#include <QLabel>
+#include "thirdparty/include/libmain.h"
+#include "my_stable_class.h"
+...
+#endif
+//! [104]
+
+
+//! [105]
+PRECOMPILED_HEADER = stable.h
+//! [105]
+
+
+//! [106]
+precompile_header:!isEmpty(PRECOMPILED_HEADER) {
+DEFINES += USING_PCH
+}
+//! [106]
+
+
+//! [107]
+PRECOMPILED_HEADER = window.h
+SOURCES            = window.cpp
+//! [107]
+
+
+//! [108]
+SOURCES += hello.cpp
+//! [108]
+
+
+//! [109]
+SOURCES += hello.cpp
+SOURCES += main.cpp
+//! [109]
+
+
+//! [110]
+SOURCES = hello.cpp \
+          main.cpp
+//! [110]
+
+
+//! [111]
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+//! [111]
+
+
+//! [112]
+TARGET = helloworld
+//! [112]
+
+
+//! [113]
+CONFIG += qt
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+//! [113]
+
+
+//! [114]
+qmake -o Makefile hello.pro
+//! [114]
+
+
+//! [115]
+qmake -tp vc hello.pro
+//! [115]
+
+
+//! [116]
+CONFIG += qt debug
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+//! [116]
+
+
+//! [117]
+win32 {
+    SOURCES += hellowin.cpp
+}
+//! [117]
+
+
+//! [118]
+CONFIG += qt debug
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+win32 {
+    SOURCES += hellowin.cpp
+}
+unix {
+    SOURCES += hellounix.cpp
+}
+//! [118]
+
+
+//! [119]
+!exists( main.cpp ) {
+    error( "No main.cpp file found" )
+}
+//! [119]
+
+
+//! [120]
+CONFIG += qt debug
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+win32 {
+    SOURCES += hellowin.cpp
+}
+unix {
+    SOURCES += hellounix.cpp
+}
+!exists( main.cpp ) {
+    error( "No main.cpp file found" )
+}
+//! [120]
+
+
+//! [121]
+win32 {
+    debug {
+        CONFIG += console
+    }
+}
+//! [121]
+
+
+//! [122]
+CONFIG += qt debug
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+win32 {
+    SOURCES += hellowin.cpp
+}
+unix {
+    SOURCES += hellounix.cpp
+}
+!exists( main.cpp ) {
+    error( "No main.cpp file found" )
+}
+win32:debug {
+    CONFIG += console
+}
+//! [122]
+
+
+//! [123]
+TEMPLATE = app
+DESTDIR  = c:/helloapp
+HEADERS += hello.h
+SOURCES += hello.cpp
+SOURCES += main.cpp
+DEFINES += QT_DLL
+CONFIG  += qt warn_on release
+//! [123]
+
+
+//! [124]
+make all
+//! [124]
+
+
+//! [125]
+make
+//! [125]
+
+
+//! [126]
+make install
+//! [126]
+
+
+//! [127]
+CONFIG(debug, debug|release) {
+    mac: TARGET = $$join(TARGET,,,_debug)
+    win32: TARGET = $$join(TARGET,,d)
+}
+//! [127]
+
+//! [128]
+customplugin.sources = customimageplugin.dll
+customplugin.sources += c:\myplugins\othercustomimageplugin.dll
+customplugin.path = imageformats
+dynamiclibrary.sources = mylib.dll helper.exe
+dynamiclibrary.path = \sys\bin
+globalplugin.sources = someglobalimageplugin.dll
+globalplugin.path = \resource\qt\plugins\imageformats
+DEPLOYMENT += customplugin dynamiclibrary globalplugin
+//! [128]
+
+//! [129]
+TARGET.EPOCALLOWDLLDATA = 1
+//! [129]
+
+//! [130]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [130]
+
+//! [131]
+QMAKE_CXXFLAGS.CW += -O2
+QMAKE_CXXFLAGS.ARMCC += -O0
+//! [131]
+
+//! [132]
+TARGET.UID2 = 0x00000001
+TARGET.UID3 = 0x00000002
+TARGET.SID = 0x00000003
+TARGET.VID = 0x00000004
+//! [132]
+
+//! [133]
+TARGET.CAPABILITY += AllFiles
+//! [133]
+
+//! [134]
+TARGET.CAPABILITY = ALL -TCB
+//! [134]
+
+//! [135]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+//! [135]
+
+//! [136]
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [136]
+
+//! [137]
+MMP_RULES += "DEFFILE hello.def"
+//! [137]
+
+//! [138]
+myBlock = \
+"START RESOURCE foo.rss" \
+"TARGET bar" \
+"TARGETPATH private\10001234" \
+"HEADER" \
+"LANG 01" \
+"UID 0x10002345 0x10003456" \
+"END"
+
+MMP_RULES += myBlock
+//! [138]
+
+//! [139]
+myIfdefBlock = \
+"$${LITERAL_HASH}ifdef WINSCW" \
+"DEFFILE hello_winscw.def" \
+"$${LITERAL_HASH}endif" 
+
+MMP_RULES += myIfdefBlock
+//! [139]
+
+//! [140]
+somelib.sources = somelib.dll
+somelib.path = \sys\bin
+somelib.pkg_prerules = "(0x12345678), 2, 2, 0, {\"Some Package\"}" \
+                  "(0x87654321), 1, *, * ~ 2, 2, 0, {\"Some Other Package\"}"
+justdep.pkg_prerules = "(0xAAAABBBB), 0, 2, 0, {\"My Framework\"}"                  
+DEPLOYMENT += somelib justdep
+//! [140]
+
+//! [141]
+default_deployment.pkg_prerules -= pkg_platform_dependencies
+my_deployment.pkg_prerules = "[0x11223344],0,0,0,{\"SomeSpecificDeviceID\"}"
+DEPLOYMENT += my_deployment
+//! [141]
+
+//! [142]
+DEPLOYMENT_PLUGIN += qjpeg
+//! [142]
+
+//! [143]
+myextension = \
+    "start extension myextension" \
+    "$${LITERAL_HASH}if defined(WINSCW)" \
+    "option MYOPTION foo" \
+    "$${LITERAL_HASH}endif" \
+    "option MYOPTION bar" \
+    "end"
+BLD_INF_RULES.prj_extensions += myextension
+//! [143]
+
+//! [144]
+RSS_RULES += "hidden = KAppIsHidden;" 
+//! [144]
+
+//! [145]
+myrssrules = \
+    "hidden = KAppIsHidden;" \
+    "launch = KAppLaunchInBackground;" \
+RSS_RULES += myrssrules
+//! [145]
+
+//! [146]
+DEPLOYMENT.installer_header = 0x12345678
+//! [146]
+
+//! [147]
+DEPLOYMENT.installer_header = "$${LITERAL_HASH}{\"My Application Installer\"},(0x12345678),1,0,0"
+//! [147]
+
+//! [148]
+# Set conditional libraries
+LIB.MARM = "LIBRARY myarm.lib"
+LIB.WINSCW = "LIBRARY mywinscw.lib"
+LIB.default = "LIBRARY mydefault.lib"
+
+# Add the conditional MMP rules
+MYCONDITIONS = MARM WINSCW
+MYVARIABLES = LIB
+
+addMMPRules(MYCONDITIONS, MYVARIABLES)
+//! [148]
+
+//! [149]
+SUBDIRS += my_executable my_library
+my_executable.subdir = app
+my_executable.depends = my_library
+my_library.subdir = lib
+//! [149]
+
+//! [150]
+symbian {
+    SUBDIRS += emulator_dll
+    emulator_dll.condition = WINSCW
+}
+//! [150]
+
+//! [151]
+RSS_RULES.service_list += "uid = 0x12345678; datatype_list = \{\}; opaque_data = r_my_icon;"
+RSS_RULES.footer +="RESOURCE CAPTION_AND_ICON_INFO r_my_icon \{ icon_file =\"$$PWD/my_icon.svg\"; \}"
+//! [151]