/****************************************************************************
**
** 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]