Merge remote-tracking branch 'origin/stable' into dev

Conflicts:
	src/concurrent/doc/qtconcurrent.qdocconf
	src/corelib/doc/qtcore.qdocconf
	src/corelib/global/qglobal.h
	src/dbus/doc/qtdbus.qdocconf
	src/dbus/qdbusmessage.h
	src/gui/doc/qtgui.qdocconf
	src/gui/image/qimagereader.cpp
	src/network/doc/qtnetwork.qdocconf
	src/opengl/doc/qtopengl.qdocconf
	src/opengl/qgl.h
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/printsupport/doc/qtprintsupport.qdocconf
	src/sql/doc/qtsql.qdocconf
	src/testlib/doc/qttestlib.qdocconf
	src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf
	src/widgets/doc/qtwidgets.qdocconf
	src/xml/doc/qtxml.qdocconf

Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
This commit is contained in:
Frederik Gladhorn 2013-02-13 11:58:07 +01:00
commit e65cd6f379
383 changed files with 28311 additions and 2769 deletions

View File

@ -195,12 +195,6 @@ sub classNames {
chomp $line; chomp $line;
chop $line if ($line =~ /\r$/); chop $line if ($line =~ /\r$/);
if($line =~ /^\#/) { if($line =~ /^\#/) {
if($line =~ /\\$/) {
while($line = <F>) {
chomp $line;
last unless($line =~ /\\$/);
}
}
return @ret if($line =~ m/^#pragma qt_sync_stop_processing/); return @ret if($line =~ m/^#pragma qt_sync_stop_processing/);
push(@ret, $1) if($line =~ m/^#pragma qt_class\(([^)]*)\)[\r\n]*$/); push(@ret, $1) if($line =~ m/^#pragma qt_class\(([^)]*)\)[\r\n]*$/);
$line = 0; $line = 0;

94
dist/changes-5.0.1 vendored
View File

@ -40,37 +40,66 @@ Legal
* Library * * Library *
**************************************************************************** ****************************************************************************
QtCore QtCore
----- -----
- Fix QMutex::tryLock with negative values
- Fix a leak in case the QMetaObject::Connection survives the sender object,
after a successful disconnect().
- Speed up and fix QByteArray::setNum()
- [QTBUG-28924] Don't increase the reference count if dynamic_cast failed
QtGui QtGui
----- -----
- Fix QGuiApplication::keyboardModifiers() and QGuiApplication::mouseButtons()
- Fix styleName support in QPA font database
- Make QImage::mirrored() propagate devicePixelRatio
- [QTBUG-28324] Fixed invalid memory read in SSSE3 image blending code.
QtWidgets QtWidgets
--------- ---------
- Do not inform that a widget is not visible when it's disabled.
- [QTBUG-28031, QTBUG-2596] QMenu: Do not set snapToMouse if a caused-widget exists.
- [QTBUG-28321] Fix focusproxy-relayed crash in QGraphicsItem destructor.
- [QTBUG-28446] Fix compilation when Q_NO_USING_KEYWORD is defined
- [QTBUG-28477] Fix QWidget::setWindowOpacity() when called before show().
- [QTBUG-28506] Style animations: fix QCommonStylePrivate::stopAnimation()
- [QTBUG-28557] Fix QGtkPainter::reset() to reset the clip rect
QtNetwork QtNetwork
--------- ---------
- [QTBUG-28937] SSL certificates: blacklist mis-issued Turktrust certificates
QtDBus QtDBus
------ ------
- qdbusxml2cpp: Check string length before checking for \r\n.
QtConcurrent QtConcurrent
------------ ------------
QtOpenGL QtOpenGL
-------- --------
QtScript - Fix compilation of Open GL ES 2 examples when using a Qt-namespace.
-------- - Fixed deadlock situation in QtOpenGL's texture management.
- updating qeglfshooks_imx6.cpp to 12.09.01 (L3.0.35) opengl-drivers
- [QTBUG-27512] Entered hardcoded urls for <OpenGL> and <Khronos O.GL>
- [QTBUG-28875] Fix bug in multisampling handling when converting from surface format
QTestLib QTestLib
-------- --------
- Add qtest_widget.h to the list of testlib headers
QtSql QtSql
----- -----
- Fix QSqlQuery test in relation to PSQL support
**************************************************************************** ****************************************************************************
* Database Drivers * * Database Drivers *
**************************************************************************** ****************************************************************************
@ -81,6 +110,8 @@ sqlite
postgres postgres
-------- --------
- Use PG_VERSION if PG_MAJORVERSION is not defined
**************************************************************************** ****************************************************************************
* Platform Specific Changes * * Platform Specific Changes *
**************************************************************************** ****************************************************************************
@ -88,19 +119,44 @@ postgres
Qt for Linux/X11 Qt for Linux/X11
---------------- ----------------
- XCB: add support for getting and setting appTime and appUserTime.
- [QTBUG-28561] Fixed incorrect handling of extra mouse buttons in XCB platform plugin.
Qt for Windows Qt for Windows
-------------- --------------
- DBUS: Fix linker errors on Windows.
- Define Q_COMPILER_AUTO_FUNCTION for MVSC
- [QTBUG-28611] Fix warnings about not being able to set Window geometry on Windows.
- [QTBUG-28611] QMdiArea: Increase minimum size for Windows 8/Large fonts.
- [QTBUG-28645] Rename conflicting symbol QVariantToVARIANT
- [QTBUG-28876] QWindowsVistaStyle: fix frame rendering
Qt for Mac OS X Qt for Mac OS X
--------------- ---------------
- Ignore ScrollBarAlwaysOn policy for transient scrollbars
- New rendering for disclose triangle, get proper color when selected
- [QTBUG-27415] Fix bugs for font selection in QFontDialog
- [QTBUG-28161] Ensure the native filedialog starts up with the right directory
- [QTBUG-28443] Cocoa: Re-enable per class palette on QPA plugin
- [QTBUG-28669] Fix transient QScrollBar flashing
- [QTBUG-28738] Bring back proper layout in QMessageBox
Qt for BlackBerry
-----------------
- Reset virtual keyboard when shown.
- Disable Q_COMPILER_RVALUE_REFS on QNX
- Fix QNX QPA plugin clipboard impl
- Don't crash because the window hasn't been initialized yet.
Qt for Embedded Linux Qt for Embedded Linux
--------------------- ---------------------
Qt for Windows CE Qt for Windows CE
----------------- -----------------
**************************************************************************** ****************************************************************************
* Compiler Specific Changes * * Compiler Specific Changes *
**************************************************************************** ****************************************************************************
@ -111,11 +167,41 @@ Qt for Windows CE
* Tools * * Tools *
**************************************************************************** ****************************************************************************
configure
---------
- Remove the -fast configure option as it was pretty much broken
- [QTBUG-23569, QTBUG-25760] Check for gtk_adjustment_configure as this is not always implemented
mkspecs
-------
- Fix the computation of the location of mkspecs.
- [QTBUG-28215] Enable forcing generation of static plugin imports
- [QTBUG-28606] Fix installation of plugin module .pris in static Qt builds
moc
---
- [QTBUG-26589] Remove the timestamp info in genarated files to optimize rebuilds with ccache
qmake
-----
- Do not fixify + create QMAKE_{PKGCONFIG,LIBTOOL}_DESTDIR
- Fix qtCompileTest for cross building modules
- [QTBUG-28104] Respect the OBJECTS_DIR setting for XCode projects
- [QTBUG-24589] Fix handling of precompiled header files in XCode projects
- [QTBUG-28624] accept hex/octal values for RC_LANG and RC_CODEPAGE
- [QTBUG-28625] fix duplicate TRANSLATION entry in generated RC file
- [QTBUG-28682, QTBUG-28683] fix DLL manifest resource ids for debug builds
**************************************************************************** ****************************************************************************
* Plugins * * Plugins *
**************************************************************************** ****************************************************************************
- Accessibility Linux: Prevent access to invalid interfaces
- Call QAccessible::updateAccessibility when caret moves in QTextEdit
**************************************************************************** ****************************************************************************
* Important Behavior Changes * * Important Behavior Changes *

119
dist/changes-5.0.2 vendored Normal file
View File

@ -0,0 +1,119 @@
Qt 5.0.2 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.0.0 and 5.0.1.
For more details, refer to the online documentation included in this
distribution. The documentation is also available online:
http://qt-project.org/doc/qt-5.0/
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
http://bugreports.qt-project.org/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
****************************************************************************
* General *
****************************************************************************
General Improvements
--------------------
Third party components
----------------------
Legal
-----
****************************************************************************
* Library *
****************************************************************************
QtCore
-----
- [QTBUG-29130] Fixed compilation when connecting with the new syntax to a
signal that has more than 3 registered meta type arguments, and the compiler
does not support variadic templates
QtGui
-----
QtWidgets
---------
QtNetwork
---------
QtDBus
------
QtConcurrent
------------
QtOpenGL
--------
QtTest
------
QtSql
-----
****************************************************************************
* Database Drivers *
****************************************************************************
sqlite
------
postgres
--------
****************************************************************************
* Platform Specific Changes *
****************************************************************************
Qt for Linux/X11
----------------
Qt for Windows
--------------
Qt for Mac OS X
---------------
Qt for BlackBerry
-----------------
Qt for Embedded Linux
---------------------
Qt for Windows CE
-----------------
****************************************************************************
* Compiler Specific Changes *
****************************************************************************
****************************************************************************
* Tools *
****************************************************************************
****************************************************************************
* Plugins *
****************************************************************************
****************************************************************************
* Important Behavior Changes *
****************************************************************************

View File

@ -51,14 +51,14 @@ QString contentType = header.value("content-type");
//! [2] //! [2]
QHttpRequestHeader header("GET", QUrl::toPercentEncoding("/index.html")); QHttpRequestHeader header("GET", QUrl::toPercentEncoding("/index.html"));
header.setValue("Host", "qt.nokia.com"); header.setValue("Host", "qt-project.org");
http->setHost("qt.nokia.com"); http->setHost("qt-project.org");
http->request(header); http->request(header);
//! [2] //! [2]
//! [3] //! [3]
http->setHost("qt.nokia.com"); // id == 1 http->setHost("qt-project.org"); // id == 1
http->get(QUrl::toPercentEncoding("/index.html")); // id == 2 http->get(QUrl::toPercentEncoding("/index.html")); // id == 2
//! [3] //! [3]

View File

@ -13,7 +13,7 @@
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle" >
<string>QtDBus Chat</string> <string>Qt D-Bus Chat</string>
</property> </property>
<widget class="QWidget" name="centralwidget" > <widget class="QWidget" name="centralwidget" >
<layout class="QHBoxLayout" > <layout class="QHBoxLayout" >

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(dbus))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = listnames \ SUBDIRS = listnames \
pingpong \ pingpong \

View File

@ -1,3 +1,5 @@
requires(if(wince|embedded|x11):qtHaveModule(gui))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = styleexample raycasting flickable digiflip SUBDIRS = styleexample raycasting flickable digiflip

View File

@ -2,27 +2,22 @@ TEMPLATE = subdirs
CONFIG += no_docs_target CONFIG += no_docs_target
SUBDIRS = \ SUBDIRS = \
dbus \
embedded \
gestures \
gui \ gui \
network \
threads \
xml \
qpa
qtHaveModule(widgets) {
SUBDIRS += widgets \
ipc \ ipc \
network \
opengl \
qpa \
qtconcurrent \
qtestlib \
sql \ sql \
threads \
tools \ tools \
touch \ touch \
gestures widgets \
} xml
wince*|embedded|x11:qtHaveModule(gui): SUBDIRS += embedded
contains(QT_BUILD_PARTS, tools):qtHaveModule(gui):qtHaveModule(widgets): SUBDIRS += qtestlib
qtHaveModule(opengl):qtHaveModule(widgets): SUBDIRS += opengl
qtHaveModule(dbus): SUBDIRS += dbus
qtHaveModule(concurrent): SUBDIRS += qtconcurrent
aggregate.files = aggregate/examples.pro aggregate.files = aggregate/examples.pro
aggregate.path = $$[QT_INSTALL_EXAMPLES] aggregate.path = $$[QT_INSTALL_EXAMPLES]

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(widgets))
TEMPLATE = \ TEMPLATE = \
subdirs subdirs
SUBDIRS = \ SUBDIRS = \

View File

@ -1,4 +1,4 @@
**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal ** Contact: http://www.qt-project.org/legal

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
# no QSharedMemory # no QSharedMemory
!vxworks:!qnx:SUBDIRS = sharedmemory !vxworks:!qnx:SUBDIRS = sharedmemory

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(opengl))
TEMPLATE = subdirs TEMPLATE = subdirs
contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2){ contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2){

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example qtconcurrent/imagescaling \example imagescaling
\title Image Scaling Example \title Image Scaling Example
\brief Demonstrates how to asynchronously scale images. \brief Demonstrates how to asynchronously scale images.
\ingroup qtconcurrentexamples \ingroup qtconcurrentexamples

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example qtconcurrent/map \example map
\title Map Example \title Map Example
\brief Demonstrates how to scale images synchronously. \brief Demonstrates how to scale images synchronously.
\ingroup qtconcurrentexamples \ingroup qtconcurrentexamples

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example qtconcurrent/progressdialog \example progressdialog
\title QtConcurrent Progress Dialog Example \title QtConcurrent Progress Dialog Example
\brief Demonstrates how to monitor the progress of the active processes. \brief Demonstrates how to monitor the progress of the active processes.
\ingroup qtconcurrentexamples \ingroup qtconcurrentexamples

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(concurrent))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = imagescaling \ SUBDIRS = imagescaling \
map \ map \

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example qtconcurrent/runfunction \example runfunction
\title Run Function Example \title Run Function Example
\brief Demonstrates how to run standard functions concurrently. \brief Demonstrates how to run standard functions concurrently.
\ingroup qtconcurrentexamples \ingroup qtconcurrentexamples

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example qtconcurrent/wordcount \example wordcount
\title QtConcurrent Word Count Example \title QtConcurrent Word Count Example
\brief Demonstrates how to use the map-reduce algorithm \brief Demonstrates how to use the map-reduce algorithm
\ingroup qtconcurrentexamples \ingroup qtconcurrentexamples

View File

@ -1,5 +1,5 @@
The QTestLib framework is a tool for unit testing Qt based applications The Qt Test framework is a tool for unit testing Qt based applications
and libraries. QTestLib provides all the functionality commonly found and libraries. Qt Test provides all the functionality commonly found
in unit testing frameworks as well as extensions for testing graphical in unit testing frameworks as well as extensions for testing graphical
user interfaces. user interfaces.

View File

@ -1,2 +1,4 @@
requires(contains(QT_BUILD_PARTS,tools):qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = tutorial1 tutorial2 tutorial3 tutorial4 tutorial5 SUBDIRS = tutorial1 tutorial2 tutorial3 tutorial4 tutorial5

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = books \ SUBDIRS = books \
@ -19,4 +21,3 @@ SUBDIRS = books \
} }
EXAMPLE_FILES = connection.h EXAMPLE_FILES = connection.h

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
CONFIG += ordered CONFIG += ordered
SUBDIRS = contiguouscache \ SUBDIRS = contiguouscache \

View File

@ -1,2 +1,4 @@
requires(qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = pinchzoom fingerpaint knobs dials SUBDIRS = pinchzoom fingerpaint knobs dials

View File

@ -192,6 +192,6 @@
fetched with QTextBlock::userData(). Matching parentheses can be fetched with QTextBlock::userData(). Matching parentheses can be
highlighted with an extra selection. The "Matching Parentheses highlighted with an extra selection. The "Matching Parentheses
with QSyntaxHighlighter" article in Qt Quarterly 31 implements with QSyntaxHighlighter" article in Qt Quarterly 31 implements
this. You find it here: \l{http://doc.qt.nokia.com/qq/}. this. You find it here: \l{http://doc.qt.digia.com/qq/}.
*/ */

View File

@ -248,7 +248,7 @@
It is possible to implement parenthesis matching with It is possible to implement parenthesis matching with
QSyntaxHighlighter. The "Matching Parentheses with QSyntaxHighlighter. The "Matching Parentheses with
QSyntaxHighlighter" article in Qt Quarterly 31 QSyntaxHighlighter" article in Qt Quarterly 31
(\l{http://doc.qt.nokia.com/qq/}) implements this. We also have (\l{http://doc.qt.digia.com/qq/}) implements this. We also have
the \l{Code Editor Example}, which shows how to implement line the \l{Code Editor Example}, which shows how to implement line
numbers and how to highlight the current line. numbers and how to highlight the current line.

View File

@ -1,28 +1,15 @@
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS = basicdrawing \ SUBDIRS = basicdrawing \
concentriccircles \ concentriccircles \
examples_affine \ affine \
examples_composition \ composition \
examples_deform \ deform \
examples_gradients \ gradients \
examples_pathstroke \ pathstroke \
painting_shared \
imagecomposition \ imagecomposition \
painterpaths \ painterpaths \
transformations \ transformations \
fontsampler fontsampler
examples_affine.subdir = affine EXAMPLE_FILES = \
examples_composition.subdir = composition shared
examples_deform.subdir = deform
examples_gradients.subdir = gradients
examples_pathstroke.subdir = pathstroke
painting_shared.subdir = shared
!ordered {
examples_affine.depends = painting_shared
examples_deform.depends = painting_shared
examples_gradients.depends = painting_shared
examples_composition.depends = painting_shared
examples_pathstroke.depends = painting_shared
}

View File

@ -1,26 +0,0 @@
TEMPLATE = lib
CONFIG += static
qtHaveModule(opengl) {
DEFINES += QT_OPENGL_SUPPORT
QT += opengl
}
QT += widgets
build_all:!build_pass {
CONFIG -= build_all
CONFIG += release
}
TARGET = demo_shared
SOURCES += \
arthurstyle.cpp\
arthurwidgets.cpp \
hoverpoints.cpp
HEADERS += \
arthurstyle.h \
arthurwidgets.h \
hoverpoints.h
RESOURCES += shared.qrc

View File

@ -9,7 +9,7 @@ SOURCES += main.cpp \
EXAMPLE_FILES = encodedfiles EXAMPLE_FILES = encodedfiles
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/codecs target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/codecs
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -8,7 +8,7 @@ SOURCES = fsmodel.cpp \
RESOURCES = completer.qrc RESOURCES = completer.qrc
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/completer target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/completer
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -8,7 +8,7 @@ SOURCES = main.cpp \
RESOURCES = customcompleter.qrc RESOURCES = customcompleter.qrc
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/customcompleter target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/customcompleter
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -5,5 +5,5 @@ SUBDIRS = echowindow \
#! [0] #! [0]
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/echoplugin
INSTALLS += target INSTALLS += target

View File

@ -15,7 +15,7 @@ win32 {
} }
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/echoplugin
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -12,5 +12,5 @@ DESTDIR = ../plugins
EXAMPLE_FILES = echoplugin.json EXAMPLE_FILES = echoplugin.json
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/echoplugin/plugin target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/echoplugin/plugin
INSTALLS += target INSTALLS += target

View File

@ -22,7 +22,7 @@ TRANSLATIONS += translations/i18n_ar.ts \
translations/i18n_zh.ts translations/i18n_zh.ts
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/i18n target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/i18n
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -19,5 +19,5 @@ if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
#! [0] #! [0]
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint
INSTALLS += target INSTALLS += target

View File

@ -10,5 +10,5 @@ DESTDIR = ../../plugandpaint/plugins
#! [0] #! [0]
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint/plugins target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint/plugins
INSTALLS += target INSTALLS += target

View File

@ -10,5 +10,5 @@ DESTDIR = ../../plugandpaint/plugins
#! [0] #! [0]
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint/plugins target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint/plugins
INSTALLS += target INSTALLS += target

View File

@ -5,7 +5,7 @@ SOURCES = regexpdialog.cpp \
main.cpp main.cpp
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/regexp target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/regexp
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -13,7 +13,7 @@ SOURCES = locationdialog.cpp \
EXAMPLE_FILES = inifiles EXAMPLE_FILES = inifiles
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/settingseditor target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/settingseditor
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -18,5 +18,5 @@ win32 {
EXAMPLE_FILES += simplestyle.json EXAMPLE_FILES += simplestyle.json
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin/styles target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin/styles
INSTALLS += target INSTALLS += target

View File

@ -3,5 +3,5 @@ SUBDIRS = stylewindow \
plugin plugin
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin
INSTALLS += target INSTALLS += target

View File

@ -13,5 +13,5 @@ win32 {
} }
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin
INSTALLS += target INSTALLS += target

View File

@ -8,7 +8,7 @@ SOURCES = treemodelcompleter.cpp \
RESOURCES = treemodelcompleter.qrc RESOURCES = treemodelcompleter.qrc
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/treemodelcompleter target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/treemodelcompleter
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -12,5 +12,5 @@ build_all:!build_pass {
RESOURCES += undo.qrc RESOURCES += undo.qrc
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/undo target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/undo
INSTALLS += target INSTALLS += target

View File

@ -12,7 +12,7 @@ SOURCES = commands.cpp \
RESOURCES = undoframework.qrc RESOURCES = undoframework.qrc
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/undoframework target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/undoframework
INSTALLS += target INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform) simulator: warning(This example might not fully work on Simulator platform)

View File

@ -4,7 +4,7 @@ Qt documentation, which can be viewed using Qt Assistant or a Web browser.
The tutorial is also available online at The tutorial is also available online at
http://qt.nokia.com/doc/4.4/tutorial.html http://qt-project.org/doc/qt-5.0/qtwidgets/tutorials-addressbook.html
All programs corresponding to the chapters in the tutorial should All programs corresponding to the chapters in the tutorial should
automatically be built when Qt is compiled, or will be provided as automatically be built when Qt is compiled, or will be provided as

View File

@ -4,7 +4,7 @@ Qt documentation, which can be viewed using Qt Assistant or a Web browser.
The tutorial is also available online at The tutorial is also available online at
http://qt.nokia.com/doc/tutorial.html http://qt-project.org/doc/qt-5.0/qtwidgets/tutorials-addressbook.html
All programs corresponding to the chapters in the tutorial should All programs corresponding to the chapters in the tutorial should
automatically be built when Qt is compiled, or will be provided as automatically be built when Qt is compiled, or will be provided as

View File

@ -1,3 +1,5 @@
requires(qtHaveModule(widgets))
TEMPLATE = subdirs TEMPLATE = subdirs
CONFIG += no_docs_target CONFIG += no_docs_target

View File

@ -67,7 +67,7 @@ void MainWindow::on_aboutAction_triggered()
{ {
QMessageBox::about(this, tr("About Style sheet"), QMessageBox::about(this, tr("About Style sheet"),
tr("The <b>Style Sheet</b> example shows how widgets can be styled " tr("The <b>Style Sheet</b> example shows how widgets can be styled "
"using <a href=\"http://qt.nokia.com/doc/4.5/stylesheet.html\">Qt " "using <a href=\"http://doc.qt.digia.com/4.5/stylesheet.html\">Qt "
"Style Sheets</a>. Click <b>File|Edit Style Sheet</b> to pop up the " "Style Sheets</a>. Click <b>File|Edit Style Sheet</b> to pop up the "
"style editor, and either choose an existing style sheet or design " "style editor, and either choose an existing style sheet or design "
"your own.")); "your own."));

View File

@ -71,16 +71,16 @@
</folder> </folder>
<folder folded="no"> <folder folded="no">
<title>Qt</title> <title>Qt</title>
<bookmark href="http://qt.nokia.com/doc/2.3/"> <bookmark href="http://doc.qt.digia.com/2.3/">
<title>Qt 2.3 Reference</title> <title>Qt 2.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/3.3/"> <bookmark href="http://doc.qt.digia.com/3.3/">
<title>Qt 3.3 Reference</title> <title>Qt 3.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 Reference</title> <title>Qt 4.0 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>Qt Home Page</title> <title>Qt Home Page</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -45,16 +45,16 @@
<title>QtQuestions</title> <title>QtQuestions</title>
</bookmark> </bookmark>
</folder> </folder>
<bookmark href="http://qt.nokia.com/doc/qq/"> <bookmark href="http://doc.qt.digia.com/qq/">
<title>Qt Quarterly</title> <title>Qt Quarterly</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>Qt home page</title> <title>Qt home page</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 documentation</title> <title>Qt 4.0 documentation</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/developer/faqs/"> <bookmark href="http://qt-project.org/faq/">
<title>Frequently Asked Questions</title> <title>Frequently Asked Questions</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -5,7 +5,7 @@
</head> </head>
<body> <body>
<p>A paragraph.</p> <p>A paragraph.</p>
<p>A second paragraph. Check out our <a href="http://labs.qt.nokia.com/">developer blogs</a></p> <p>A second paragraph. Check out our <a href="http://blog.qt.digia.com/">developer blogs</a></p>
<p>And the last paragraph. Or our <a href="http://qt.nokia.com/doc/">online documentation</a>.</p> <p>And the last paragraph. Or our <a href="http://qt-project.org/doc/">online documentation</a>.</p>
</body> </body>
</html> </html>

View File

@ -76,7 +76,7 @@ RSSListing::RSSListing(QWidget *parent)
{ {
lineEdit = new QLineEdit(this); lineEdit = new QLineEdit(this);
lineEdit->setText("http://labs.qt.nokia.com/blogs/feed"); lineEdit->setText("http://blog.qt.digia.com/feed/");
fetchButton = new QPushButton(tr("Fetch"), this); fetchButton = new QPushButton(tr("Fetch"), this);

View File

@ -71,16 +71,16 @@
</folder> </folder>
<folder folded="no"> <folder folded="no">
<title>Qt</title> <title>Qt</title>
<bookmark href="http://qt.nokia.com/doc/2.3/"> <bookmark href="http://doc.qt.digia.com/2.3/">
<title>Qt 2.3 Reference</title> <title>Qt 2.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/3.3/"> <bookmark href="http://doc.qt.digia.com/3.3/">
<title>Qt 3.3 Reference</title> <title>Qt 3.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 Reference</title> <title>Qt 4.0 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>Qt Home Page</title> <title>Qt Home Page</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -45,16 +45,16 @@
<title>QtQuestions</title> <title>QtQuestions</title>
</bookmark> </bookmark>
</folder> </folder>
<bookmark href="http://qt.nokia.com/doc/qq/"> <bookmark href="http://doc.qt.digia.com/qq/">
<title>Qt Quarterly</title> <title>Qt Quarterly</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>qt home page</title> <title>qt home page</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 documentation</title> <title>Qt 4.0 documentation</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/developer/faqs/"> <bookmark href="http://qt-project.org/faq/">
<title>Frequently Asked Questions</title> <title>Frequently Asked Questions</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -71,16 +71,16 @@
</folder> </folder>
<folder folded="no"> <folder folded="no">
<title>Qt</title> <title>Qt</title>
<bookmark href="http://qt.nokia.com/doc/2.3/"> <bookmark href="http://doc.qt.digia.com/2.3/">
<title>Qt 2.3 Reference</title> <title>Qt 2.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/3.3/"> <bookmark href="http://doc.qt.digia.com/3.3/">
<title>Qt 3.3 Reference</title> <title>Qt 3.3 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 Reference</title> <title>Qt 4.0 Reference</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>Qt Home Page</title> <title>Qt Home Page</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -45,16 +45,16 @@
<title>QtQuestions</title> <title>QtQuestions</title>
</bookmark> </bookmark>
</folder> </folder>
<bookmark href="http://qt.nokia.com/doc/qq/"> <bookmark href="http://doc.qt.digia.com/qq/">
<title>Qt Quarterly</title> <title>Qt Quarterly</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/"> <bookmark href="http://qt-project.org/">
<title>Qt home page</title> <title>Qt home page</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/doc/4.0/"> <bookmark href="http://doc.qt.digia.com/4.0/">
<title>Qt 4.0 documentation</title> <title>Qt 4.0 documentation</title>
</bookmark> </bookmark>
<bookmark href="http://qt.nokia.com/developer/faqs/"> <bookmark href="http://qt-project.org/faq/">
<title>Frequently Asked Questions</title> <title>Frequently Asked Questions</title>
</bookmark> </bookmark>
</folder> </folder>

View File

@ -37,13 +37,13 @@ CMAKE_PARTIAL_MODULE_DEPS = $$replace(CMAKE_MODULE_DEPS, ";", ";Qt5::")
!isEmpty(CMAKE_PARTIAL_MODULE_DEPS):CMAKE_QT5_MODULE_DEPS = "Qt5::$${CMAKE_PARTIAL_MODULE_DEPS}" !isEmpty(CMAKE_PARTIAL_MODULE_DEPS):CMAKE_QT5_MODULE_DEPS = "Qt5::$${CMAKE_PARTIAL_MODULE_DEPS}"
CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX])
contains(CMAKE_INCLUDE_DIR, "^\.\.") { contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") {
CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/
CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True
} }
CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX])
contains(CMAKE_LIB_DIR, "^\.\.") { contains(CMAKE_LIB_DIR, "^\\.\\./.*") {
CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/
CMAKE_LIB_DIR_IS_ABSOLUTE = True CMAKE_LIB_DIR_IS_ABSOLUTE = True
} else { } else {
@ -54,13 +54,13 @@ contains(CMAKE_LIB_DIR, "^\.\.") {
} }
CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX])
contains(CMAKE_BIN_DIR, "^\.\.") { contains(CMAKE_BIN_DIR, "^\\.\\./.*") {
CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ CMAKE_BIN_DIR = $$[QT_HOST_BINS]/
CMAKE_BIN_DIR_IS_ABSOLUTE = True CMAKE_BIN_DIR_IS_ABSOLUTE = True
} }
CMAKE_ARCHDATA_DIR = $$cmakeRelativePath($$[QT_INSTALL_ARCHDATA], $$[QT_INSTALL_PREFIX]) CMAKE_ARCHDATA_DIR = $$cmakeRelativePath($$[QT_INSTALL_ARCHDATA], $$[QT_INSTALL_PREFIX])
contains(CMAKE_ARCHDATA_DIR, "^\.\.") { # For the mkspecs contains(CMAKE_ARCHDATA_DIR, "^\\.\\./.*") { # For the mkspecs
CMAKE_ARCHDATA_DIR = $$[QT_INSTALL_ARCHDATA]/ CMAKE_ARCHDATA_DIR = $$[QT_INSTALL_ARCHDATA]/
CMAKE_ARCHDATA_DIR_IS_ABSOLUTE = True CMAKE_ARCHDATA_DIR_IS_ABSOLUTE = True
} }

View File

@ -3,7 +3,11 @@ if (CMAKE_VERSION VERSION_LESS 2.8.3)
message(FATAL_ERROR \"Qt 5 requires at least CMake version 2.8.3\") message(FATAL_ERROR \"Qt 5 requires at least CMake version 2.8.3\")
endif() endif()
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
!!ELSE
set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\")
!!ENDIF
set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MAJOR "$$eval(QT.$${MODULE}.MAJOR_VERSION)") set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MAJOR "$$eval(QT.$${MODULE}.MAJOR_VERSION)")
set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MINOR "$$eval(QT.$${MODULE}.MINOR_VERSION)") set(Qt5$${CMAKE_MODULE_NAME}_VERSION_MINOR "$$eval(QT.$${MODULE}.MINOR_VERSION)")
@ -14,13 +18,13 @@ set(Qt5$${CMAKE_MODULE_NAME}_LIBRARIES Qt5::$${CMAKE_MODULE_NAME})
!!IF !no_module_headers !!IF !no_module_headers
!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\")
set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
\"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\"
\"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\"
) )
!!ELSE !!ELSE
set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\" \"$${CMAKE_INCLUDE_DIR}Qt$${CMAKE_MODULE_NAME}\") set(Qt5$${CMAKE_MODULE_NAME}_INCLUDE_DIRS \"$${CMAKE_INCLUDE_DIR}Qt$${CMAKE_MODULE_NAME}\")
set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS
\"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\" \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\"
\"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\" \"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}/$${MODULE_INCNAME}\"
@ -179,12 +183,12 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
!!ENDIF // CMAKE_RELEASE_TYPE !!ENDIF // CMAKE_RELEASE_TYPE
endif()
!!IF !isEmpty(CMAKE_MODULE_EXTRAS) !!IF !isEmpty(CMAKE_MODULE_EXTRAS)
include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\") include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}ConfigExtras.cmake\")
!!ENDIF !!ENDIF
!!IF !isEmpty(CMAKE_MODULE_MACROS) !!IF !isEmpty(CMAKE_MODULE_MACROS)
include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\") include(\"${CMAKE_CURRENT_LIST_DIR}/Qt5$${CMAKE_MODULE_NAME}Macros.cmake\")
!!ENDIF !!ENDIF
endif()

View File

@ -25,7 +25,7 @@ qml1_target: \
else: \ else: \
instbase = $$[QT_INSTALL_QML] instbase = $$[QT_INSTALL_QML]
exists($$[QT_HOST_PREFIX]/.qmake.cache) { !prefix_build {
# These bizarre rules copy the files to the qtbase build directory # These bizarre rules copy the files to the qtbase build directory
defineReplace(qmlModStripSrcDir) { defineReplace(qmlModStripSrcDir) {

View File

@ -89,3 +89,12 @@ load(qt_targets)
} }
load(qml_module) load(qml_module)
unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
lib_replace.match = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*/lib
else: \
lib_replace.match = $$eval(QT.$${CXX_MODULE}.libs)
lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PRL_INSTALL_REPLACE += lib_replace
}

View File

@ -67,6 +67,7 @@ qtAddModules(QT_PRIVATE, LIBS_PRIVATE)
message("Running this project against other versions of the Qt modules may crash at any arbitrary point.") message("Running this project against other versions of the Qt modules may crash at any arbitrary point.")
message("This is not a bug, but a result of using Qt internals. You have been warned!") message("This is not a bug, but a result of using Qt internals. You have been warned!")
} }
qtAddRpathLink($$QT $$QT_PRIVATE)
wince*:static:gui { wince*:static:gui {
QTLIB += qmenu_wce.res QTLIB += qmenu_wce.res

View File

@ -20,7 +20,10 @@
debug(1, "Not loading qmodule.pri twice") debug(1, "Not loading qmodule.pri twice")
} }
!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):!exists($$[QT_HOST_DATA]/.qmake.cache) { !exists($$[QT_HOST_DATA]/.qmake.cache): \
CONFIG += prefix_build
!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):prefix_build {
# When doing a -prefix build of top-level qt5/qt.pro, we need to announce # When doing a -prefix build of top-level qt5/qt.pro, we need to announce
# this repo's module pris' location to the other repos. # this repo's module pris' location to the other repos.
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_)) isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_))

View File

@ -16,8 +16,8 @@ isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR) isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
QTDIR = $$[QT_HOST_PREFIX] !prefix_build {
exists($$QTDIR/.qmake.cache) { QTDIR = $$[QT_HOST_PREFIX]
# Permit modules to enforce being built outside QTDIR ... # Permit modules to enforce being built outside QTDIR ...
!force_independent: MODULE_BASE_OUTDIR = $$QTDIR !force_independent: MODULE_BASE_OUTDIR = $$QTDIR
# ... though this sort of breaks the idea. # ... though this sort of breaks the idea.

View File

@ -24,6 +24,13 @@ for(qmod, QMAKEMODULES): \
QDOC += -outputdir $$QMAKE_DOCS_OUTPUTDIR QDOC += -outputdir $$QMAKE_DOCS_OUTPUTDIR
!build_online_docs: \ !build_online_docs: \
QDOC += -installdir $$[QT_INSTALL_DOCS] QDOC += -installdir $$[QT_INSTALL_DOCS]
qtver.name = QT_VERSION
qtver.value = $$QT_VERSION
qtmver.name = QT_VER
qtmver.value = $${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}
qtvertag.name = QT_VERSION_TAG
qtvertag.value = $$replace(QT_VERSION, \.,)
qtAddToolEnv(QDOC, qtver qtmver qtvertag)
doc_command = $$QDOC $$QMAKE_DOCS doc_command = $$QDOC $$QMAKE_DOCS
prepare_docs { prepare_docs {
prepare_docs.commands += $$doc_command -prepare -no-link-errors prepare_docs.commands += $$doc_command -prepare -no-link-errors

View File

@ -9,6 +9,22 @@
# We mean it. # We mean it.
# #
defineTest(addInstallFiles) {
for(sf, 2) {
sf = $$relative_path($$sf, $$_PRO_FILE_PWD_)
contains(sf, \\..*) {
check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf")
} else {
sfp = $$replace(sf, /.*, )
!equals(sfp, $$sf): \
$$1 *= $$sfp
else: \
$$1 += $$sf
}
}
export($$1)
}
probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
!isEmpty(probase):!contains(probase, ^\\..*) { !isEmpty(probase):!contains(probase, ^\\..*) {
for(ex, EXAMPLE_FILES): \ for(ex, EXAMPLE_FILES): \
@ -42,34 +58,26 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
# Just for Qt Creator # Just for Qt Creator
OTHER_FILES += $$sourcefiles OTHER_FILES += $$sourcefiles
for(inst, INSTALLS): \
!equals(inst, target):!contains($${inst}.CONFIG, no_check_exist): \
for(file, $${inst}.files): \
sourcefiles += $$files($$absolute_path($$file, $$_PRO_FILE_PWD_))
sourcefiles += \ sourcefiles += \
$$_PRO_FILE_ $$RC_FILE $$DEF_FILE \ $$_PRO_FILE_ $$RC_FILE $$DEF_FILE \
$$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \
$$DBUS_ADAPTORS $$DBUS_INTERFACES $$DBUS_ADAPTORS $$DBUS_INTERFACES
for(sf, sourcefiles) { addInstallFiles(sources.files, $$sourcefiles)
sf = $$relative_path($$sf, $$_PRO_FILE_PWD_)
contains(sf, \\..*) {
check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf")
} else {
sfp = $$replace(sf, /.*, )
!equals(sfp, $$sf): \
sources.files *= $$sfp
else: \
sources.files += $$sf
}
}
sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase
INSTALLS += sources INSTALLS += sources
check_examples { check_examples {
srcfiles = $$sources.files
for(inst, INSTALLS): \
!equals(inst, target):!contains($${inst}.CONFIG, no_check_exist): \
for(file, $${inst}.files): \
instfiles += $$files($$absolute_path($$file, $$_PRO_FILE_PWD_))
addInstallFiles(srcfiles, $$instfiles)
thefiles = $$files($$_PRO_FILE_PWD_/*) thefiles = $$files($$_PRO_FILE_PWD_/*)
for(i, thefiles): \ for(i, thefiles): \
allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_) allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_)
for(i, sources.files): \ for(i, srcfiles): \
allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_) allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_)
for(i, SUBDIRS) { for(i, SUBDIRS) {
sd = $$eval($${i}.file) sd = $$eval($${i}.file)
@ -84,4 +92,12 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
allfiles -= doc allfiles -= doc
!isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles") !isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles")
} }
# Do not actually build the examples in production builds
!equals(TEMPLATE, subdirs):!contains(QT_CONFIG, private_tests) {
TEMPLATE = aux
CONFIG -= have_target qt staticlib dll
SOURCES =
INSTALLS -= target
}
} }

View File

@ -121,15 +121,6 @@ defineTest(qtAddModule) {
contains(MODULE_CONFIG, staticlib): \ contains(MODULE_CONFIG, staticlib): \
PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB} PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB}
# Make sure we can link to uninstalled libraries
!isEmpty(MODULE_LIBS) {
for(rpl, QT.$${1}.rpath_link): \
QMAKE_RPATHLINKDIR *= $$rpl
!auto_use_privates:!isEqual(2, UsePrivate): \
for(rpl, QT.$${1}.rpath_link_private): \
QMAKE_RPATHLINKDIR *= $$rpl
}
} }
# Only link to this module if a libs directory is set, else this is just a module # Only link to this module if a libs directory is set, else this is just a module
# to give access to sources or include files, and not for linking. # to give access to sources or include files, and not for linking.
@ -190,11 +181,28 @@ defineTest(qtAddModules) {
export(using_privates) export(using_privates)
} }
defineTest(qtAddRpathLink) {
# -rpath-link is used by the linker to find dependencies of dynamic
# libraries which were NOT specified on the command line.
# This means that paths of direct dependencies (QT & QT_PRIVATE)
# don't need to appear here. However, their private dependencies'
# paths OTOH need to be put there.
pubqt = $$replace(1, -private$, )
pubdep = $$resolve_depends(pubqt, "QT.")
privdep = $$resolve_depends(pubqt, "QT.", ".depends" ".private_depends" ".run_depends")
privdep -= $$pubdep
rpaths =
for(dep, privdep): \
rpaths += $$eval(QT.$${dep}.libs)
QMAKE_RPATHLINKDIR *= $$unique(rpaths)
export(QMAKE_RPATHLINKDIR)
}
# variable, default # variable, default
defineTest(qtPrepareTool) { defineTest(qtPrepareTool) {
$$1 = $$eval(QT_TOOL.$${2}.command) $$1 = $$eval(QT_TOOL.$${2}.command)
isEmpty($$1) { isEmpty($$1) {
$$1 = $$[QT_HOST_BINS/get]/$$2 $$1 = $$[QT_HOST_BINS]/$$2
contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) { contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) {
exists($$eval($$1).bat) { exists($$eval($$1).bat) {
$$1 = $$eval($$1).bat $$1 = $$eval($$1).bat

View File

@ -45,65 +45,7 @@ else: \
MODULE_DEFINE = QT_$${ucmodule}_LIB MODULE_DEFINE = QT_$${ucmodule}_LIB
MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES
load(qt_build_paths) load(qt_module_pris)
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri
!build_pass {
# Create a module .pri file
unix:!static: \
module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]"
else: \
module_rpath =
!isEmpty(QT_FOR_PRIVATE) {
contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.")
module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE"
} else {
module_privdep =
}
static: \
module_build_type = "QT.$${MODULE}.module_config = staticlib"
else:mac:contains(QT_CONFIG, qt_framework): \
module_build_type = "QT.$${MODULE}.module_config = lib_bundle"
else: \
module_build_type =
!isEmpty(MODULE_CONFIG): \
module_config = "QT.$${MODULE}.CONFIG = $$MODULE_CONFIG"
else: \
module_config =
!no_module_headers {
MODULE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME"
MODULE_PRIVATE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME"
}
MODULE_PRI_CONT = \
"QT.$${MODULE}.VERSION = $${VERSION}" \
"QT.$${MODULE}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \
"QT.$${MODULE}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \
"QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
"" \
"QT.$${MODULE}.name = $$TARGET" \
"QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \
"QT.$${MODULE}.includes = $$MODULE_INCLUDES" \
"QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" \
"QT.$${MODULE}.libs = \$\$QT_MODULE_LIB_BASE" \
"QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \
$$module_rpath \
"QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \
"QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \
"QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" \
"QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
$$module_privdep \
$$module_build_type \
$$module_config \
"QT.$${MODULE}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting
"" \
"QT_CONFIG += $$MODULE" # this is obsolete, but some code still depends on it
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
} # !build_pass
load(qt_module_fwdpri)
INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}.private_includes) INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}.private_includes)
@ -112,7 +54,7 @@ INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}.private_inclu
#other #other
TEMPLATE = lib TEMPLATE = lib
DESTDIR = $$eval(QT.$${MODULE}.libs) DESTDIR = $$eval(QT.$${MODULE}.libs)
win32:!wince*:exists($$[QT_INSTALL_PREFIX]/.qmake.cache): DLLDESTDIR = $$eval(QT.$${MODULE}.bins) win32:!wince*:!prefix_build: DLLDESTDIR = $$eval(QT.$${MODULE}.bins)
CONFIG += qmake_cache target_qt CONFIG += qmake_cache target_qt
@ -190,23 +132,26 @@ unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \ !isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \ else: \
rplbase = $$[QT_INSTALL_PREFIX/get] rplbase = $$MODULE_QMAKE_OUTDIR
include_replace.match = $$rplbase/include include_replace.match = $$rplbase/include
include_replace.replace = $$[QT_INSTALL_HEADERS/raw] include_replace.replace = $$[QT_INSTALL_HEADERS/raw]
lib_replace.match = $$rplbase/lib lib_replace.match = $$rplbase/lib
lib_replace.replace = $$[QT_INSTALL_LIBS/raw] lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
} }
unix { unix {
CONFIG += create_libtool explicitlib CONFIG += create_libtool explicitlib
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS/raw] QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS/raw]
QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace
} }
unix|win32-g++* { unix|win32-g++* {
for(i, QT):QMAKE_PKGCONFIG_REQUIRES += $$eval(QT.$${i}.name) QMAKE_PKGCONFIG_NAME = $$replace(TARGET, ^Qt, "Qt$$section(VERSION, ., 0, 0) ")
QMAKE_PKGCONFIG_FILE = $$replace(TARGET, ^Qt, Qt$$section(VERSION, ., 0, 0))
for(i, MODULE_DEPENDS): \
QMAKE_PKGCONFIG_REQUIRES += $$replace(QT.$${i}.name, ^Qt, Qt$$eval(QT.$${i}.MAJOR_VERSION))
isEmpty(QMAKE_PKGCONFIG_DESCRIPTION): \ isEmpty(QMAKE_PKGCONFIG_DESCRIPTION): \
QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module
} }
@ -228,11 +173,6 @@ win32 {
TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
# Provides useful info normally only contained in the internal .qmake.cache file
qt_conf.name = qt_config
qt_conf.variable = CONFIG
QMAKE_PKGCONFIG_VARIABLES += qt_conf
load(qt_targets) load(qt_targets)
win32:DEFINES+=_USE_MATH_DEFINES win32:DEFINES+=_USE_MATH_DEFINES

View File

@ -1,92 +0,0 @@
#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
!build_pass {
load(qt_build_paths)
MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri
# -rpath-link is used by the linker to find depedencies of dynamic
# libraries which were NOT specified on the command line.
# This means that .libs of each module's regular .depends (QT) don't
# need to be put there, as they appear on the linker line anyway.
# A module's QT_PRIVATE's .libs OTOH need to be put there.
# .depends_private (QT_FOR_PRIVATE) is somewhat special: if the privates
# are used, the libraries are explicitly linked. If not, their locations
# need to be put into -rpath-link. As QT_FOR_PRIVATE cannot in turn
# contain privates, they always end up in -rpath-link of dependant
# modules.
# For simplicity of use, each module's rpath list has all dependencies
# transitively resolved already.
pubqt = $$MODULE_DEPENDS $$QT_FOR_PRIVATE
pubdep = $$resolve_depends(pubqt, "QT.")
privqt = $$replace(QT_PRIVATE, -private$, )
privdep = $$resolve_depends(privqt, "QT.")
rpaths =
alldep = $$pubdep $$privdep
for(dep, alldep) { # Inherit link-rpaths from all our dependencies
rpaths += $$eval(QT.$${dep}.rpath_link) $$eval(QT.$${dep}.rpath_link_private)
}
privdep -= $$pubdep
for(dep, privdep): \ # Add our private dependencies' lib paths as new link-rpaths
rpaths += $$eval(QT.$${dep}.libs)
!isEmpty(rpaths) {
rpaths = $$unique(rpaths)
module_rpathlink = "QT.$${MODULE}.rpath_link = $$val_escape(rpaths)"
} else {
module_rpathlink =
}
rpaths_priv =
xtradep = $$resolve_depends(QT_FOR_PRIVATE, "QT.")
for(dep, xtradep): \ # Add our private API's dependencies' lib paths as new link-rpaths
rpaths_priv += $$eval(QT.$${dep}.libs)
rpaths_priv = $$unique(rpaths_priv)
rpaths_priv -= $$rpaths
!isEmpty(rpaths_priv) {
module_rpathlink_priv = "QT.$${MODULE}.rpath_link_private = $$val_escape(rpaths_priv)"
} else {
module_rpathlink_priv =
}
# Create a forwarding module .pri file
MODULE_FWD_PRI_CONT = \
"QT_MODULE_BIN_BASE = $$MODULE_BASE_OUTDIR/bin" \
"QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_OUTDIR/include" \
"QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
"QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \
"QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
"QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \
"QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \
$$module_rpathlink \
$$module_rpathlink_priv \
"include($$MODULE_PRI)"
write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.")
touch($$MODULE_FWD_PRI, $$MODULE_PRI)
# Then, inject the new module into the current cache state
!contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI) { # before the actual include()!
added = $$MODULE_PRI $$MODULE_FWD_PRI
cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added)
unset(added)
}
include($$MODULE_FWD_PRI)
for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \
name depends private_depends module_config CONFIG DEFINES sources \
includes private_includes bins libs libexecs plugins imports qml \
rpath_link rpath_link_private \
)):defined(QT.$${MODULE}.$$var, var):cache(QT.$${MODULE}.$$var, transient)
cache(QT_CONFIG, transient)
} # !build_pass
# Schedule the regular .pri file for installation
CONFIG += qt_install_module

View File

@ -0,0 +1,121 @@
#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
load(qt_build_paths)
MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri
prefix_build: \
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri
else: \
MODULE_PRI = $$MODULE_FWD_PRI
!build_pass {
# Create a module .pri file
unix:!static: \
module_rpath = "QT.$${MODULE}.rpath = $$[QT_INSTALL_LIBS/raw]"
else: \
module_rpath =
!isEmpty(QT_FOR_PRIVATE) {
contains(QT_FOR_PRIVATE, .*-private$):error("QT_FOR_PRIVATE may not contain *-private.")
module_privdep = "QT.$${MODULE}.private_depends = $$QT_FOR_PRIVATE"
} else {
module_privdep =
}
!isEmpty(QT_PRIVATE): \
module_rundep = "QT.$${MODULE}.run_depends = $$unique($$list($$replace(QT_PRIVATE, -private$, )))"
else: \
module_rundep =
static: \
module_build_type = "QT.$${MODULE}.module_config = staticlib"
else:mac:contains(QT_CONFIG, qt_framework): \
module_build_type = "QT.$${MODULE}.module_config = lib_bundle"
else: \
module_build_type =
!isEmpty(MODULE_CONFIG): \
module_config = "QT.$${MODULE}.CONFIG = $$MODULE_CONFIG"
else: \
module_config =
!no_module_headers {
MODULE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME"
MODULE_PRIVATE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME"
}
MODULE_PRI_CONT = \
"QT.$${MODULE}.VERSION = $${VERSION}" \
"QT.$${MODULE}.MAJOR_VERSION = $$section(VERSION, ., 0, 0)" \
"QT.$${MODULE}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \
"QT.$${MODULE}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
"" \
"QT.$${MODULE}.name = $$TARGET" \
"QT.$${MODULE}.bins = \$\$QT_MODULE_BIN_BASE" \
"QT.$${MODULE}.includes = $$MODULE_INCLUDES" \
"QT.$${MODULE}.private_includes = $$MODULE_PRIVATE_INCLUDES" \
"QT.$${MODULE}.libs = \$\$QT_MODULE_LIB_BASE" \
"QT.$${MODULE}.libexecs = \$\$QT_MODULE_LIBEXEC_BASE" \
$$module_rpath \
"QT.$${MODULE}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \
"QT.$${MODULE}.imports = \$\$QT_MODULE_IMPORT_BASE" \
"QT.$${MODULE}.qml = \$\$QT_MODULE_QML_BASE" \
"QT.$${MODULE}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
$$module_privdep \
$$module_rundep \
$$module_build_type \
$$module_config \
"QT.$${MODULE}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting
"" \
"QT_CONFIG += $$MODULE" # this is obsolete, but some code still depends on it
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
MODULE_PRI_FILES = $$MODULE_PRI
prefix_build {
# Create a forwarding module .pri file
MODULE_FWD_PRI_CONT = \
"QT_MODULE_BIN_BASE = $$MODULE_BASE_OUTDIR/bin" \
"QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_OUTDIR/include" \
"QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
"QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \
"QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
"QT_MODULE_LIBEXEC_BASE = $$MODULE_BASE_OUTDIR/libexec" \
"QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \
"include($$MODULE_PRI)"
write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.")
touch($$MODULE_FWD_PRI, $$MODULE_PRI)
MODULE_PRI_FILES += $$MODULE_FWD_PRI
} else { # prefix_build
# This is needed for the direct include() below.
QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS]
QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS]
QT_MODULE_QML_BASE = $$[QT_INSTALL_QML]
QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
QT_MODULE_LIBEXEC_BASE = $$[QT_INSTALL_LIBEXECS]
QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS]
}
# Then, inject the new module into the current cache state
!contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_PRI): \ # before the actual include()!
cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES)
include($$MODULE_FWD_PRI)
for(var, $$list(VERSION MAJOR_VERSION MINOR_VERSION PATCH_VERSION \
name depends private_depends module_config CONFIG DEFINES sources \
includes private_includes bins libs libexecs plugins imports qml \
rpath_link rpath_link_private \
)):defined(QT.$${MODULE}.$$var, var):cache(QT.$${MODULE}.$$var, transient)
cache(QT_CONFIG, transient)
} # !build_pass
# Schedule the regular .pri file for installation
CONFIG += qt_install_module

View File

@ -58,3 +58,13 @@ load(qt_targets)
wince*:LIBS += $$QMAKE_LIBS_GUI wince*:LIBS += $$QMAKE_LIBS_GUI
QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \
rplbase = $$MODULE_QMAKE_OUTDIR
lib_replace.match = $$rplbase/lib
lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PRL_INSTALL_REPLACE += lib_replace
}

View File

@ -31,7 +31,7 @@ load(qt_targets)
# If we are doing a prefix build, create a "module" pri which enables # If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build. # qtPrepareTool() to work with the non-installed build.
!build_pass:!exists($$[QT_INSTALL_PREFIX]/.qmake.cache) { !build_pass:prefix_build {
isEmpty(MODULE):MODULE = $$TARGET isEmpty(MODULE):MODULE = $$TARGET

View File

@ -3110,15 +3110,18 @@ MakefileGenerator::openOutput(QFile &file, const QString &build) const
QString QString
MakefileGenerator::pkgConfigFileName(bool fixify) MakefileGenerator::pkgConfigFileName(bool fixify)
{ {
QString ret = var("TARGET"); QString ret = project->first("QMAKE_PKGCONFIG_FILE").toQString();
if (ret.isEmpty()) {
ret = project->first("TARGET").toQString();
int slsh = ret.lastIndexOf(Option::dir_sep); int slsh = ret.lastIndexOf(Option::dir_sep);
if(slsh != -1) if (slsh != -1)
ret = ret.right(ret.length() - slsh - 1); ret = ret.right(ret.length() - slsh - 1);
if(ret.startsWith("lib")) if (ret.startsWith("lib"))
ret = ret.mid(3); ret = ret.mid(3);
int dot = ret.indexOf('.'); int dot = ret.indexOf('.');
if(dot != -1) if (dot != -1)
ret = ret.left(dot); ret = ret.left(dot);
}
ret += Option::pkgcfg_ext; ret += Option::pkgcfg_ext;
QString subdir = project->first("QMAKE_PKGCONFIG_DESTDIR").toQString(); QString subdir = project->first("QMAKE_PKGCONFIG_DESTDIR").toQString();
if(!subdir.isEmpty()) { if(!subdir.isEmpty()) {

View File

@ -311,7 +311,7 @@ VCCLCompilerTool::VCCLCompilerTool()
: AssemblerOutput(asmListingNone), : AssemblerOutput(asmListingNone),
BasicRuntimeChecks(runtimeBasicCheckNone), BasicRuntimeChecks(runtimeBasicCheckNone),
BrowseInformation(brInfoNone), BrowseInformation(brInfoNone),
BufferSecurityCheck(_False), BufferSecurityCheck(unset),
CallingConvention(callConventionDefault), CallingConvention(callConventionDefault),
CompileAs(compileAsDefault), CompileAs(compileAsDefault),
CompileAsManaged(managedDefault), CompileAsManaged(managedDefault),
@ -603,9 +603,7 @@ bool VCCLCompilerTool::parseOption(const char* option)
CallingConvention = callConventionFastCall; CallingConvention = callConventionFastCall;
break; break;
case 's': case 's':
// Warning: following [num] is not used, AdditionalOptions += option;
// were should we put it?
BufferSecurityCheck = _True;
break; break;
case 'y': case 'y':
EnableFunctionLevelLinking = _True; EnableFunctionLevelLinking = _True;
@ -1080,11 +1078,20 @@ bool VCCLCompilerTool::parseOption(const char* option)
} }
found = false; break; found = false; break;
case 'o': case 'o':
if (second == 'p' && third == 'e' && fourth == 'n') { {
const char *str = option + 2;
const size_t len = strlen(str);
if (len >= 5 && len <= 6 && strncmp(str, "penmp", 5) == 0) {
if (len == 5) {
OpenMP = _True; OpenMP = _True;
break; break;
} else if (str[5] == '-') {
OpenMP = _False;
break;
}
} }
found = false; break; found = false; break;
}
case 's': case 's':
if(second == 'h' && third == 'o' && fourth == 'w') { if(second == 'h' && third == 'o' && fourth == 'w') {
ShowIncludes = _True; ShowIncludes = _True;

View File

@ -834,7 +834,7 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
if(slsh != -1) if(slsh != -1)
dst_prl = dst_prl.right(dst_prl.length() - slsh - 1); dst_prl = dst_prl.right(dst_prl.length() - slsh - 1);
dst_prl = filePrefixRoot(root, targetdir + dst_prl); dst_prl = filePrefixRoot(root, targetdir + dst_prl);
ret += "-$(INSTALL_FILE) \"" + project->first("QMAKE_INTERNAL_PRL_FILE") + "\" \"" + dst_prl + "\""; ret += installMetaFile(ProKey("QMAKE_PRL_INSTALL_REPLACE"), project->first("QMAKE_INTERNAL_PRL_FILE").toQString(), dst_prl);
if(!uninst.isEmpty()) if(!uninst.isEmpty())
uninst.append("\n\t"); uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_prl + "\""); uninst.append("-$(DEL_FILE) \"" + dst_prl + "\"");

View File

@ -382,14 +382,16 @@ QByteArray QMakeEvaluator::getCommandOutput(const QString &args) const
} }
void QMakeEvaluator::populateDeps( void QMakeEvaluator::populateDeps(
const ProStringList &deps, const ProString &prefix, const ProStringList &deps, const ProString &prefix, const ProStringList &suffixes,
QHash<ProKey, QSet<ProKey> > &dependencies, ProValueMap &dependees, QHash<ProKey, QSet<ProKey> > &dependencies, ProValueMap &dependees,
ProStringList &rootSet) const ProStringList &rootSet) const
{ {
foreach (const ProString &item, deps) foreach (const ProString &item, deps)
if (!dependencies.contains(item.toKey())) { if (!dependencies.contains(item.toKey())) {
QSet<ProKey> &dset = dependencies[item.toKey()]; // Always create entry QSet<ProKey> &dset = dependencies[item.toKey()]; // Always create entry
ProStringList depends = values(ProKey(prefix + item + QString::fromLatin1(".depends"))); ProStringList depends;
foreach (const ProString &suffix, suffixes)
depends += values(ProKey(prefix + item + suffix));
if (depends.isEmpty()) { if (depends.isEmpty()) {
rootSet << item; rootSet << item;
} else { } else {
@ -397,7 +399,7 @@ void QMakeEvaluator::populateDeps(
dset.insert(dep.toKey()); dset.insert(dep.toKey());
dependees[dep.toKey()] << item; dependees[dep.toKey()] << item;
} }
populateDeps(depends, prefix, dependencies, dependees, rootSet); populateDeps(depends, prefix, suffixes, dependencies, dependees, rootSet);
} }
} }
} }
@ -692,11 +694,10 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
} }
break; break;
case E_EVAL: case E_EVAL:
if (args.count() != 1) { if (args.count() != 1)
evalError(fL1S("eval(variable) requires one argument.")); evalError(fL1S("eval(variable) requires one argument."));
} else { else
ret += values(map(args.at(0))); ret += values(map(args.at(0)));
}
break; break;
case E_LIST: { case E_LIST: {
QString tmp; QString tmp;
@ -913,14 +914,17 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
break; break;
case E_SORT_DEPENDS: case E_SORT_DEPENDS:
case E_RESOLVE_DEPENDS: case E_RESOLVE_DEPENDS:
if (args.count() < 1 || args.count() > 2) { if (args.count() < 1 || args.count() > 3) {
evalError(fL1S("%1(var, prefix) requires one or two arguments.").arg(func.toQString(m_tmp1))); evalError(fL1S("%1(var, [prefix, [suffixes]]) requires one to three arguments.")
.arg(func.toQString(m_tmp1)));
} else { } else {
QHash<ProKey, QSet<ProKey> > dependencies; QHash<ProKey, QSet<ProKey> > dependencies;
ProValueMap dependees; ProValueMap dependees;
ProStringList rootSet; ProStringList rootSet;
ProStringList orgList = values(args.at(0).toKey()); ProStringList orgList = values(args.at(0).toKey());
populateDeps(orgList, (args.count() < 2 ? ProString() : args.at(1)), populateDeps(orgList, (args.count() < 2 ? ProString() : args.at(1)),
args.count() < 3 ? ProStringList(ProString(".depends"))
: split_value_list(args.at(2).toQString(m_tmp2)),
dependencies, dependees, rootSet); dependencies, dependees, rootSet);
for (int i = 0; i < rootSet.size(); ++i) { for (int i = 0; i < rootSet.size(); ++i) {
const ProString &item = rootSet.at(i); const ProString &item = rootSet.at(i);
@ -1155,11 +1159,10 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
for (int i = configs.size() - 1; i >= 0; i--) { for (int i = configs.size() - 1; i >= 0; i--) {
for (int mut = 0; mut < mutuals.count(); mut++) { for (int mut = 0; mut < mutuals.count(); mut++) {
if (configs[i] == mutuals[mut].trimmed()) { if (configs[i] == mutuals[mut].trimmed())
return returnBool(configs[i] == args[0]); return returnBool(configs[i] == args[0]);
} }
} }
}
return ReturnFalse; return ReturnFalse;
} }
case T_CONTAINS: { case T_CONTAINS: {
@ -1421,9 +1424,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
} }
const QString &file = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1))); const QString &file = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1)));
if (IoUtils::exists(file)) { if (IoUtils::exists(file))
return ReturnTrue; return ReturnTrue;
}
int slsh = file.lastIndexOf(QLatin1Char('/')); int slsh = file.lastIndexOf(QLatin1Char('/'));
QString fn = file.mid(slsh+1); QString fn = file.mid(slsh+1);
if (fn.contains(QLatin1Char('*')) || fn.contains(QLatin1Char('?'))) { if (fn.contains(QLatin1Char('*')) || fn.contains(QLatin1Char('?'))) {

View File

@ -219,7 +219,7 @@ public:
bool isActiveConfig(const QString &config, bool regex = false); bool isActiveConfig(const QString &config, bool regex = false);
void populateDeps( void populateDeps(
const ProStringList &deps, const ProString &prefix, const ProStringList &deps, const ProString &prefix, const ProStringList &suffixes,
QHash<ProKey, QSet<ProKey> > &dependencies, QHash<ProKey, QSet<ProKey> > &dependencies,
ProValueMap &dependees, ProStringList &rootSet) const; ProValueMap &dependees, ProStringList &rootSet) const;

View File

@ -164,29 +164,28 @@ QMakeGlobals::ArgumentReturn QMakeGlobals::addCommandLineArguments(
break; break;
default: default:
if (arg.startsWith(QLatin1Char('-'))) { if (arg.startsWith(QLatin1Char('-'))) {
if (arg == QLatin1String("-after")) { if (arg == QLatin1String("-after"))
state.after = true; state.after = true;
} else if (arg == QLatin1String("-config")) { else if (arg == QLatin1String("-config"))
argState = ArgConfig; argState = ArgConfig;
} else if (arg == QLatin1String("-nocache")) { else if (arg == QLatin1String("-nocache"))
do_cache = false; do_cache = false;
} else if (arg == QLatin1String("-cache")) { else if (arg == QLatin1String("-cache"))
argState = ArgCache; argState = ArgCache;
} else if (arg == QLatin1String("-platform") || arg == QLatin1String("-spec")) { else if (arg == QLatin1String("-platform") || arg == QLatin1String("-spec"))
argState = ArgSpec; argState = ArgSpec;
} else if (arg == QLatin1String("-xplatform") || arg == QLatin1String("-xspec")) { else if (arg == QLatin1String("-xplatform") || arg == QLatin1String("-xspec"))
argState = ArgXSpec; argState = ArgXSpec;
} else if (arg == QLatin1String("-template") || arg == QLatin1String("-t")) { else if (arg == QLatin1String("-template") || arg == QLatin1String("-t"))
argState = ArgTmpl; argState = ArgTmpl;
} else if (arg == QLatin1String("-template_prefix") || arg == QLatin1String("-tp")) { else if (arg == QLatin1String("-template_prefix") || arg == QLatin1String("-tp"))
argState = ArgTmplPfx; argState = ArgTmplPfx;
} else if (arg == QLatin1String("-win32")) { else if (arg == QLatin1String("-win32"))
dir_sep = QLatin1Char('\\'); dir_sep = QLatin1Char('\\');
} else if (arg == QLatin1String("-unix")) { else if (arg == QLatin1String("-unix"))
dir_sep = QLatin1Char('/'); dir_sep = QLatin1Char('/');
} else { else
return ArgumentUnknown; return ArgumentUnknown;
}
} else if (arg.contains(QLatin1Char('='))) { } else if (arg.contains(QLatin1Char('='))) {
if (state.after) if (state.after)
state.postcmds << arg; state.postcmds << arg;

View File

@ -99,6 +99,8 @@ public:
QString pwd; QString pwd;
QStringList precmds, preconfigs, postcmds, postconfigs; QStringList precmds, preconfigs, postcmds, postconfigs;
bool after; bool after;
void flush() { after = false; }
}; };
class QMAKE_EXPORT QMakeGlobals class QMAKE_EXPORT QMakeGlobals

View File

@ -239,7 +239,7 @@ bool QMakeParser::read(ProFile *pro)
} }
QByteArray bcont = file.readAll(); QByteArray bcont = file.readAll();
if (bcont.startsWith(QByteArray("\xef\xbb\xbf"))) { if (bcont.startsWith("\xef\xbb\xbf")) {
// UTF-8 BOM will cause subtle errors // UTF-8 BOM will cause subtle errors
m_handler->message(QMakeParserHandler::ParserIoError, m_handler->message(QMakeParserHandler::ParserIoError,
fL1S("Unexpected UTF-8 BOM in %1").arg(pro->fileName())); fL1S("Unexpected UTF-8 BOM in %1").arg(pro->fileName()));
@ -1147,11 +1147,10 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
uint nlen = uce[1]; uint nlen = uce[1];
if (uce[nlen + 2] == TokFuncTerminator) { if (uce[nlen + 2] == TokFuncTerminator) {
m_tmp.setRawData((QChar *)uce + 2, nlen); m_tmp.setRawData((QChar *)uce + 2, nlen);
if (m_tmp == statics.strhost_build) { if (m_tmp == statics.strhost_build)
m_proFile->setHostBuild(true); m_proFile->setHostBuild(true);
} else { else
parseError(fL1S("Unknown option() %1.").arg(m_tmp)); parseError(fL1S("Unknown option() %1.").arg(m_tmp));
}
return; return;
} }
} }

View File

@ -193,9 +193,8 @@ bool usage(const char *a0)
} }
int int
Option::parseCommandLine(QStringList &args) Option::parseCommandLine(QStringList &args, QMakeCmdLineParserState &state)
{ {
QMakeCmdLineParserState state(QDir::currentPath());
enum { ArgNone, ArgOutput } argState = ArgNone; enum { ArgNone, ArgOutput } argState = ArgNone;
int x = 0; int x = 0;
while (x < args.count()) { while (x < args.count()) {
@ -313,8 +312,6 @@ Option::parseCommandLine(QStringList &args)
fprintf(stderr, "***Option %s requires a parameter\n", qPrintable(args.at(x - 1))); fprintf(stderr, "***Option %s requires a parameter\n", qPrintable(args.at(x - 1)));
return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR; return Option::QMAKE_CMDLINE_SHOW_USAGE | Option::QMAKE_CMDLINE_ERROR;
} }
globals->commitCommandLineArguments(state);
globals->debugLevel = Option::debug_level;
return Option::QMAKE_CMDLINE_SUCCESS; return Option::QMAKE_CMDLINE_SUCCESS;
} }
@ -374,6 +371,7 @@ Option::init(int argc, char **argv)
Option::qmake_mode = Option::QMAKE_GENERATE_MAKEFILE; Option::qmake_mode = Option::QMAKE_GENERATE_MAKEFILE;
} }
QMakeCmdLineParserState cmdstate(QDir::currentPath());
const QByteArray envflags = qgetenv("QMAKEFLAGS"); const QByteArray envflags = qgetenv("QMAKEFLAGS");
if (!envflags.isNull()) { if (!envflags.isNull()) {
QStringList args; QStringList args;
@ -399,7 +397,8 @@ Option::init(int argc, char **argv)
} }
if (hasWord) if (hasWord)
args << QString::fromLocal8Bit(buf); args << QString::fromLocal8Bit(buf);
parseCommandLine(args); parseCommandLine(args, cmdstate);
cmdstate.flush();
} }
if(argc && argv) { if(argc && argv) {
QStringList args; QStringList args;
@ -430,7 +429,7 @@ Option::init(int argc, char **argv)
break; break;
} }
int ret = parseCommandLine(args); int ret = parseCommandLine(args, cmdstate);
if(ret != Option::QMAKE_CMDLINE_SUCCESS) { if(ret != Option::QMAKE_CMDLINE_SUCCESS) {
if ((ret & Option::QMAKE_CMDLINE_SHOW_USAGE) != 0) if ((ret & Option::QMAKE_CMDLINE_SHOW_USAGE) != 0)
usage(argv[0]); usage(argv[0]);
@ -439,6 +438,8 @@ Option::init(int argc, char **argv)
} }
Option::qmake_args = args; Option::qmake_args = args;
} }
globals->commitCommandLineArguments(cmdstate);
globals->debugLevel = Option::debug_level;
//last chance for defaults //last chance for defaults
if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||

View File

@ -207,7 +207,7 @@ struct Option
}; };
private: private:
static int parseCommandLine(QStringList &args); static int parseCommandLine(QStringList &args, QMakeCmdLineParserState &state);
}; };
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); } inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }

View File

@ -118,10 +118,7 @@ QMakeProperty::value(const ProKey &vk)
return val; return val;
initSettings(); initSettings();
QString v = vk.toQString(); return settings->value(vk.toQString()).toString();
if (!settings->contains(v))
return settings->value("2.01a/" + v).toString(); // Backwards compat
return settings->value(v).toString();
} }
bool bool
@ -135,7 +132,6 @@ QMakeProperty::setValue(QString var, const QString &val)
{ {
initSettings(); initSettings();
settings->setValue(var, val); settings->setValue(var, val);
settings->remove("2.01a/" + var); // Backwards compat
} }
void void
@ -143,7 +139,6 @@ QMakeProperty::remove(const QString &var)
{ {
initSettings(); initSettings();
settings->remove(var); settings->remove(var);
settings->remove("2.01a/" + var); // Backwards compat
} }
bool bool
@ -153,13 +148,8 @@ QMakeProperty::exec()
if(Option::qmake_mode == Option::QMAKE_QUERY_PROPERTY) { if(Option::qmake_mode == Option::QMAKE_QUERY_PROPERTY) {
if(Option::prop::properties.isEmpty()) { if(Option::prop::properties.isEmpty()) {
initSettings(); initSettings();
QStringList keys = settings->childKeys(); foreach (const QString &key, settings->childKeys()) {
settings->beginGroup("2.01a"); QString val = settings->value(key).toString();
keys += settings->childKeys();
settings->endGroup();
keys.removeDuplicates();
foreach (const QString &key, keys) {
QString val = settings->value(settings->contains(key) ? key : "2.01a/" + key).toString();
fprintf(stdout, "%s:%s\n", qPrintable(key), qPrintable(val)); fprintf(stdout, "%s:%s\n", qPrintable(key), qPrintable(val));
} }
QStringList specialProps; QStringList specialProps;

View File

@ -81,6 +81,29 @@ syncqt.files = $$PWD/bin/syncqt
equals(QMAKE_HOST.os, Windows):syncqt.files += $$PWD/bin/syncqt.bat equals(QMAKE_HOST.os, Windows):syncqt.files += $$PWD/bin/syncqt.bat
INSTALLS += syncqt INSTALLS += syncqt
# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to find the non-installed syncqt.
prefix_build {
cmd = $$shell_path($$OUT_PWD/bin/syncqt)
contains(QMAKE_HOST.os, Windows): \
cmd = $${cmd}.bat
TOOL_PRI = $$OUT_PWD/mkspecs/modules/qt_tool_syncqt.pri
TOOL_PRI_CONT = "QT_TOOL.syncqt.command = $$val_escape(cmd)"
write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.")
# Then, inject the new tool into the current cache state
!contains(QMAKE_INTERNAL_INCLUDED_FILES, $$TOOL_PRI) { # before the actual include()!
added = $$TOOL_PRI
cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, added)
}
include($$TOOL_PRI)
cache(QT_TOOL.syncqt.command, transient)
}
#mkspecs #mkspecs
mkspecs.path = $$[QT_HOST_DATA]/mkspecs mkspecs.path = $$[QT_HOST_DATA]/mkspecs
mkspecs.files = \ mkspecs.files = \

View File

@ -15,7 +15,8 @@ isEmpty(ANGLE_DIR) {
win32 { win32 {
GNUTOOLS_DIR=$$PWD/../../../../gnuwin32/bin GNUTOOLS_DIR=$$PWD/../../../../gnuwin32/bin
exists($$GNUTOOLS_DIR/gperf.exe) { exists($$GNUTOOLS_DIR/gperf.exe) {
GNUTOOLS = "(set $$escape_expand(\\\")PATH=$$replace(GNUTOOLS_DIR, [/\\\\], $${QMAKE_DIR_SEP});%PATH%$$escape_expand(\\\"))" # Escape closing parens when expanding the variable, otherwise cmd confuses itself.
GNUTOOLS = "(set PATH=$$replace(GNUTOOLS_DIR, [/\\\\], $${QMAKE_DIR_SEP});%PATH:)=^)%)"
} }
} }

View File

@ -2,22 +2,22 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
project = QtConcurrent project = QtConcurrent
description = Qt Concurrent Reference Documentation description = Qt Concurrent Reference Documentation
url = http://qt-project.org/doc/qtconcurrent url = http://qt-project.org/doc/qt-$QT_VER/qtconcurrent
version = 5.1.0 version = $QT_VERSION
examplesinstallpath = qtconcurrent examplesinstallpath = qtconcurrent
qhp.projects = QtConcurrent qhp.projects = QtConcurrent
qhp.QtConcurrent.file = qtconcurrent.qhp qhp.QtConcurrent.file = qtconcurrent.qhp
qhp.QtConcurrent.namespace = org.qt-project.qtconcurrent.510 qhp.QtConcurrent.namespace = org.qt-project.qtconcurrent.$QT_VERSION_TAG
qhp.QtConcurrent.virtualFolder = qtconcurrent qhp.QtConcurrent.virtualFolder = qtconcurrent
qhp.QtConcurrent.indexTitle = Qt Concurrent qhp.QtConcurrent.indexTitle = Qt Concurrent
qhp.QtConcurrent.indexRoot = qhp.QtConcurrent.indexRoot =
qhp.QtConcurrent.filterAttributes = qtconcurrent 5.1.0 qtrefdoc qhp.QtConcurrent.filterAttributes = qtconcurrent $QT_VERSION qtrefdoc
qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent 5.1.0 qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent $QT_VERSION
qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent 5.1.0 qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent $QT_VERSION
qhp.QtConcurrent.subprojects = classes qhp.QtConcurrent.subprojects = classes
qhp.QtConcurrent.subprojects.classes.title = C++ Classes qhp.QtConcurrent.subprojects.classes.title = C++ Classes

View File

@ -94,6 +94,18 @@ function(test_module_includes)
include_directories(\${Qt5${qtmodule}_INCLUDE_DIRS}) include_directories(\${Qt5${qtmodule}_INCLUDE_DIRS})
add_definitions(\${Qt5${qtmodule}_DEFINITIONS})\n" add_definitions(\${Qt5${qtmodule}_DEFINITIONS})\n"
) )
# Because the CI system tests built packages before installation,
# the include dir allowing module-includes for the new module is not
# the same as the dir for QtCore (because that is at the installation
# location). The CI system is untypical here in that it attempts to use
# packages while they are in an intermediate state, so we work around
# that in the test system.
set(packages_string
"${packages_string}
include_directories(\"\${Qt5${qtmodule}_DIR}/../../../include\")\n"
)
set(libraries_string "${libraries_string} Qt5::${qtmodule}") set(libraries_string "${libraries_string} Qt5::${qtmodule}")
endwhile() endwhile()

View File

@ -1,12 +1,10 @@
get_filename_component(_qt5_corelib_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE)
if (NOT TARGET Qt5::qmake) if (NOT TARGET Qt5::qmake)
add_executable(Qt5::qmake IMPORTED) add_executable(Qt5::qmake IMPORTED)
set_target_properties(Qt5::qmake PROPERTIES set_target_properties(Qt5::qmake PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5_corelib_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\"
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\"
!!ENDIF !!ENDIF
@ -18,7 +16,7 @@ if (NOT TARGET Qt5::moc)
set_target_properties(Qt5::moc PROPERTIES set_target_properties(Qt5::moc PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5_corelib_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\"
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\"
!!ENDIF !!ENDIF
@ -32,7 +30,7 @@ if (NOT TARGET Qt5::rcc)
set_target_properties(Qt5::rcc PROPERTIES set_target_properties(Qt5::rcc PROPERTIES
!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION \"${_qt5_corelib_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\"
!!ELSE !!ELSE
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\" IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\"
!!ENDIF !!ENDIF
@ -44,9 +42,9 @@ set(Qt5Core_MOC_EXECUTABLE Qt5::moc)
set(Qt5Core_RCC_EXECUTABLE Qt5::rcc) set(Qt5Core_RCC_EXECUTABLE Qt5::rcc)
!!IF isEmpty(CMAKE_ARCHDATA_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_ARCHDATA_DIR_IS_ABSOLUTE)
list(APPEND Qt5Core_INCLUDE_DIRS \"${_qt5_corelib_install_prefix}/$${CMAKE_ARCHDATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") list(APPEND Qt5Core_INCLUDE_DIRS \"${_qt5Core_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5Core_install_prefix}/$${CMAKE_ARCHDATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\")
!!ELSE !!ELSE
list(APPEND Qt5Core_INCLUDE_DIRS \"$${CMAKE_ARCHDATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") list(APPEND Qt5Core_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\" \"$${CMAKE_ARCHDATA_DIR}mkspecs/$${CMAKE_MKSPEC}\")
!!ENDIF !!ENDIF
!!IF !isEmpty(CMAKE_ADD_FPIE_FLAGS) !!IF !isEmpty(CMAKE_ADD_FPIE_FLAGS)
@ -80,7 +78,7 @@ if (NOT TARGET Qt5::WinMain)
set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(Qt5::WinMain PROPERTIES set_target_properties(Qt5::WinMain PROPERTIES
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION_DEBUG \"${_qt5_corelib_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\" IMPORTED_LOCATION_DEBUG \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\"
!!ELSE !!ELSE
IMPORTED_LOCATION_DEBUG \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\" IMPORTED_LOCATION_DEBUG \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\"
!!ENDIF !!ENDIF
@ -91,7 +89,7 @@ if (NOT TARGET Qt5::WinMain)
set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(Qt5::WinMain PROPERTIES set_target_properties(Qt5::WinMain PROPERTIES
!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE)
IMPORTED_LOCATION_RELEASE \"${_qt5_corelib_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\" IMPORTED_LOCATION_RELEASE \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\"
!!ELSE !!ELSE
IMPORTED_LOCATION_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\" IMPORTED_LOCATION_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\"
!!ENDIF !!ENDIF

View File

@ -234,7 +234,7 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.9)
foreach(_module ${_qt5_modules}) foreach(_module ${_qt5_modules})
if (NOT Qt5${_module}_FOUND) if (NOT Qt5${_module}_FOUND)
find_package(Qt5${_module} PATHS ${_qt5_corelib_install_prefix} NO_DEFAULT_PATH) find_package(Qt5${_module} PATHS ${_qt5Core_install_prefix} NO_DEFAULT_PATH)
if (NOT Qt5${_module}_FOUND) if (NOT Qt5${_module}_FOUND)
message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.") message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
endif() endif()

View File

@ -54,7 +54,10 @@ HOST_BINS = $$[QT_HOST_BINS/raw]
host_bins.name = host_bins host_bins.name = host_bins
host_bins.variable = HOST_BINS host_bins.variable = HOST_BINS
QMAKE_PKGCONFIG_VARIABLES += host_bins qt_conf.name = qt_config
qt_conf.variable = QT_CONFIG
QMAKE_PKGCONFIG_VARIABLES += host_bins qt_conf
ctest_macros_file.input = $$PWD/Qt5CTestMacros.cmake ctest_macros_file.input = $$PWD/Qt5CTestMacros.cmake
ctest_macros_file.output = $$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake ctest_macros_file.output = $$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake

View File

@ -2,22 +2,22 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
project = QtCore project = QtCore
description = Qt Core Reference Documentation description = Qt Core Reference Documentation
url = http://qt-project.org/doc/qtcore url = http://qt-project.org/doc/qt-$QT_VER/qtcore
version = 5.1.0 version = $QT_VERSION
examplesinstallpath = core examplesinstallpath = core
qhp.projects = QtCore qhp.projects = QtCore
qhp.QtCore.file = qtcore.qhp qhp.QtCore.file = qtcore.qhp
qhp.QtCore.namespace = org.qt-project.qtcore.510 qhp.QtCore.namespace = org.qt-project.qtcore.$QT_VERSION_TAG
qhp.QtCore.virtualFolder = qtcore qhp.QtCore.virtualFolder = qtcore
qhp.QtCore.indexTitle = Qt Core qhp.QtCore.indexTitle = Qt Core
qhp.QtCore.indexRoot = qhp.QtCore.indexRoot =
qhp.QtCore.filterAttributes = qtcore 5.1.0 qtrefdoc qhp.QtCore.filterAttributes = qtcore $QT_VERSION qtrefdoc
qhp.QtCore.customFilters.Qt.name = QtCore 5.1.0 qhp.QtCore.customFilters.Qt.name = QtCore $QT_VERSION
qhp.QtCore.customFilters.Qt.filterAttributes = qtcore 5.1.0 qhp.QtCore.customFilters.Qt.filterAttributes = qtcore $QT_VERSION
qhp.QtCore.subprojects = classes qhp.QtCore.subprojects = classes
qhp.QtCore.subprojects.classes.title = C++ Classes qhp.QtCore.subprojects.classes.title = C++ Classes
qhp.QtCore.subprojects.classes.indexTitle = Qt Core C++ Classes qhp.QtCore.subprojects.classes.indexTitle = Qt Core C++ Classes
@ -36,7 +36,6 @@ exampledirs += \
../ \ ../ \
snippets \ snippets \
../../../examples/threads/ \ ../../../examples/threads/ \
../../../examples/tools/ \ ../../../examples/tools/
../../../examples/widgets/
imagedirs += images imagedirs += images

View File

@ -535,7 +535,7 @@ CApaApplication *myApplicationFactory();
//! [49] //! [49]
void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *); void myMessageHandler(QtMsgType, const QMessageLogContext &, const QString &);
//! [49] //! [49]
//! [50] //! [50]

View File

@ -45,7 +45,7 @@ QUrl url("http://www.example.com/List of holidays.xml");
//! [1] //! [1]
QUrl url = QUrl::fromEncoded("http://qt.nokia.com/List%20of%20holidays.xml"); QUrl url = QUrl::fromEncoded("http://qt-project.org/List%20of%20holidays.xml");
//! [1] //! [1]
@ -73,10 +73,10 @@ http://www.example.com/cgi-bin/drawgraph.cgi?type(pie)color(green)
//! [5] //! [5]
QUrl baseUrl("http://qt.nokia.com/support"); QUrl baseUrl("http://qt.digia.com/Support/");
QUrl relativeUrl("../products/solutions"); QUrl relativeUrl("../Product/Library/");
qDebug(baseUrl.resolved(relativeUrl).toString()); qDebug(baseUrl.resolved(relativeUrl).toString());
// prints "http://qt.nokia.com/products/solutions" // prints "http://qt.digia.com/Product/Library/"
//! [5] //! [5]

View File

@ -480,7 +480,8 @@ QObject::disconnect(lineEdit, &QLineEdit::textChanged,
//! [48] //! [48]
//! [49] //! [49]
if (isSignalConnected(QMetaMethod::fromSignal(&MyObject::valueChanged))) { static const QMetaMethod valueChangedSignal = QMetaMethod::fromSignal(&MyObject::valueChanged);
if (isSignalConnected(valueChangedSignal)) {
QByteArray data; QByteArray data;
data = get_the_value(); // expensive operation data = get_the_value(); // expensive operation
emit valueChanged(data); emit valueChanged(data);

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/legal ** Contact: http://www.qt-project.org/legal
** **
** This file is part of the documentation of the Qt Toolkit. ** This file is part of the documentation of the Qt Toolkit.
@ -38,41 +38,68 @@
** **
****************************************************************************/ ****************************************************************************/
//! [0] #include <QtCore/QThread>
class MyObject;
//! [reimpl-run]
class WorkerThread : public QThread
{
Q_OBJECT
void run() Q_DECL_OVERRIDE {
QString result;
/* expensive or blocking operation */
emit resultReady(result);
}
signals:
void resultReady(const QString &s);
};
void MyObject::startWorkInAThread()
{
WorkerThread *workerThread = new WorkerThread(this);
connect(workerThread, &WorkerThread::resultReady, this, &MyObject::handleResults);
connect(workerThread, &WorkerThread::finished, workerThread, &QObject::deleteLater);
workerThread->start();
}
//! [reimpl-run]
//! [worker]
class Worker : public QObject class Worker : public QObject
{ {
Q_OBJECT Q_OBJECT
QThread workerThread;
public slots: public slots:
void doWork() { void doWork(const QString &parameter) {
... // ...
emit resultReady(result);
} }
signals:
void resultReady(const QString &result);
}; };
void MyObject::putWorkerInAThread() class Controller : public QObject
{ {
Q_OBJECT
QThread workerThread;
public:
Controller() {
Worker *worker = new Worker; Worker *worker = new Worker;
QThread *workerThread = new QThread(this); worker->moveToThread(&workerThread);
connect(workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(workerThread, &QThread::started, worker, &Worker::doWork); connect(this, &Controller::operate, worker, &Worker::doWork);
connect(workerThread, &QThread::finished, worker, &Worker::deleteLater); connect(worker, &Worker::resultReady, this, &Controller::handleResults);
worker->moveToThread(workerThread); workerThread.start();
// Starts an event loop, and emits workerThread->started()
workerThread->start();
}
//! [0]
//! [1]
class AdvancedThreadManager : public QThread
{
protected:
void run()
{
/* ... other code to initialize thread... */
// Begin event handling
exec();
} }
~Controller() {
workerThread.quit();
workerThread.wait();
}
public slots:
void handleResults(const QString &);
signals:
void operate(const QString &);
}; };
//! [1] //! [worker]

View File

@ -258,7 +258,7 @@ if (url.startsWith("ftp:"))
//! [26] //! [26]
QByteArray url("http://qt.nokia.com/index.html"); QByteArray url("http://qt-project.org/doc/qt-5.0/qtdoc/index.html");
if (url.endsWith(".html")) if (url.endsWith(".html"))
... ...
//! [26] //! [26]
@ -286,16 +286,16 @@ QByteArray z = x.mid(5); // z == "pineapples"
//! [30] //! [30]
QByteArray x("Qt by NOKIA"); QByteArray x("Qt by DIGIA");
QByteArray y = x.toLower(); QByteArray y = x.toLower();
// y == "qt by nokia" // y == "qt by digia"
//! [30] //! [30]
//! [31] //! [31]
QByteArray x("Qt by NOKIA"); QByteArray x("Qt by DIGIA");
QByteArray y = x.toUpper(); QByteArray y = x.toUpper();
// y == "QT BY NOKIA" // y == "QT BY DIGIA"
//! [31] //! [31]

View File

@ -856,8 +856,8 @@ void Widget::toLongLongFunction()
void Widget::toLowerFunction() void Widget::toLowerFunction()
{ {
//! [75] //! [75]
QString str = "Qt by NOKIA"; QString str = "The Qt PROJECT";
str = str.toLower(); // str == "qt by nokia" str = str.toLower(); // str == "the qt project"
//! [75] //! [75]
} }

View File

@ -61,8 +61,8 @@ int main(int argc, char *argv[])
stream.writeAttribute("folded", "no"); stream.writeAttribute("folded", "no");
//! [write element] //! [write element]
stream.writeStartElement("bookmark"); stream.writeStartElement("bookmark");
stream.writeAttribute("href", "http://qt.nokia.com/"); stream.writeAttribute("href", "http://qt-project.org/");
stream.writeTextElement("title", "Qt Home"); stream.writeTextElement("title", "Qt Project");
stream.writeEndElement(); // bookmark stream.writeEndElement(); // bookmark
//! [write element] //! [write element]
stream.writeEndElement(); // folder stream.writeEndElement(); // folder

View File

@ -0,0 +1,14 @@
QT += widgets
HEADERS = mainwindow.h
SOURCES = main.cpp \
mainwindow.cpp
#! [0]
RESOURCES = application.qrc
#! [0]
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/mainwindows/application
INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform)

View File

@ -0,0 +1,10 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/copy.png</file>
<file>images/cut.png</file>
<file>images/new.png</file>
<file>images/open.png</file>
<file>images/paste.png</file>
<file>images/save.png</file>
</qresource>
</RCC>

Some files were not shown because too many files have changed in this diff Show More