Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev

This commit is contained in:
Giuseppe D'Angelo 2013-02-17 20:31:38 +01:00 committed by The Qt Project
commit e88011357e
383 changed files with 28311 additions and 2769 deletions

View File

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

94
dist/changes-5.0.1 vendored
View File

@ -40,37 +40,66 @@ Legal
* Library *
****************************************************************************
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
-----
- 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
---------
- 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
---------
- [QTBUG-28937] SSL certificates: blacklist mis-issued Turktrust certificates
QtDBus
------
- qdbusxml2cpp: Check string length before checking for \r\n.
QtConcurrent
------------
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
--------
- Add qtest_widget.h to the list of testlib headers
QtSql
-----
- Fix QSqlQuery test in relation to PSQL support
****************************************************************************
* Database Drivers *
****************************************************************************
@ -81,6 +110,8 @@ sqlite
postgres
--------
- Use PG_VERSION if PG_MAJORVERSION is not defined
****************************************************************************
* Platform Specific Changes *
****************************************************************************
@ -88,19 +119,44 @@ postgres
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
--------------
- 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
---------------
- 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 Windows CE
-----------------
****************************************************************************
* Compiler Specific Changes *
****************************************************************************
@ -111,11 +167,41 @@ Qt for Windows CE
* 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 *
****************************************************************************
- Accessibility Linux: Prevent access to invalid interfaces
- Call QAccessible::updateAccessibility when caret moves in QTextEdit
****************************************************************************
* 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]
QHttpRequestHeader header("GET", QUrl::toPercentEncoding("/index.html"));
header.setValue("Host", "qt.nokia.com");
http->setHost("qt.nokia.com");
header.setValue("Host", "qt-project.org");
http->setHost("qt-project.org");
http->request(header);
//! [2]
//! [3]
http->setHost("qt.nokia.com"); // id == 1
http->setHost("qt-project.org"); // id == 1
http->get(QUrl::toPercentEncoding("/index.html")); // id == 2
//! [3]

View File

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

View File

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

View File

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

View File

@ -1,28 +1,23 @@
TEMPLATE = subdirs
CONFIG += no_docs_target
SUBDIRS = \
gui \
network \
threads \
xml \
qpa
qtHaveModule(widgets) {
SUBDIRS += widgets \
ipc \
sql \
tools \
touch \
gestures
}
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
SUBDIRS = \
dbus \
embedded \
gestures \
gui \
ipc \
network \
opengl \
qpa \
qtconcurrent \
qtestlib \
sql \
threads \
tools \
touch \
widgets \
xml
aggregate.files = aggregate/examples.pro
aggregate.path = $$[QT_INSTALL_EXAMPLES]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -192,6 +192,6 @@
fetched with QTextBlock::userData(). Matching parentheses can be
highlighted with an extra selection. The "Matching Parentheses
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
QSyntaxHighlighter. The "Matching Parentheses with
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
numbers and how to highlight the current line.

View File

@ -1,28 +1,15 @@
TEMPLATE = subdirs
SUBDIRS = basicdrawing \
concentriccircles \
examples_affine \
examples_composition \
examples_deform \
examples_gradients \
examples_pathstroke \
painting_shared \
affine \
composition \
deform \
gradients \
pathstroke \
imagecomposition \
painterpaths \
transformations \
fontsampler
examples_affine.subdir = affine
examples_composition.subdir = composition
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
}
EXAMPLE_FILES = \
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
# install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/codecs
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/codecs
INSTALLS += target
simulator: warning(This example might not fully work on Simulator platform)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -22,7 +22,7 @@ TRANSLATIONS += translations/i18n_ar.ts \
translations/i18n_zh.ts
# install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/i18n
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/i18n
INSTALLS += target
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]
# install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/plugandpaint
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint
INSTALLS += target

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -12,7 +12,7 @@ SOURCES = commands.cpp \
RESOURCES = undoframework.qrc
# install
target.path = $$[QT_INSTALL_EXAMPLES]/tools/undoframework
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/undoframework
INSTALLS += target
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
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
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
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
automatically be built when Qt is compiled, or will be provided as

View File

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

View File

@ -67,7 +67,7 @@ void MainWindow::on_aboutAction_triggered()
{
QMessageBox::about(this, tr("About Style sheet"),
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 editor, and either choose an existing style sheet or design "
"your own."));

View File

@ -71,16 +71,16 @@
</folder>
<folder folded="no">
<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>
</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>
</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>
</bookmark>
<bookmark href="http://qt.nokia.com/">
<bookmark href="http://qt-project.org/">
<title>Qt Home Page</title>
</bookmark>
</folder>

View File

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

View File

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

View File

@ -76,7 +76,7 @@ RSSListing::RSSListing(QWidget *parent)
{
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);

View File

@ -71,16 +71,16 @@
</folder>
<folder folded="no">
<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>
</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>
</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>
</bookmark>
<bookmark href="http://qt.nokia.com/">
<bookmark href="http://qt-project.org/">
<title>Qt Home Page</title>
</bookmark>
</folder>

View File

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

View File

@ -71,16 +71,16 @@
</folder>
<folder folded="no">
<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>
</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>
</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>
</bookmark>
<bookmark href="http://qt.nokia.com/">
<bookmark href="http://qt-project.org/">
<title>Qt Home Page</title>
</bookmark>
</folder>

View File

@ -45,16 +45,16 @@
<title>QtQuestions</title>
</bookmark>
</folder>
<bookmark href="http://qt.nokia.com/doc/qq/">
<bookmark href="http://doc.qt.digia.com/qq/">
<title>Qt Quarterly</title>
</bookmark>
<bookmark href="http://qt.nokia.com/">
<bookmark href="http://qt-project.org/">
<title>Qt home page</title>
</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>
</bookmark>
<bookmark href="http://qt.nokia.com/developer/faqs/">
<bookmark href="http://qt-project.org/faq/">
<title>Frequently Asked Questions</title>
</bookmark>
</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}"
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_IS_ABSOLUTE = True
}
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_IS_ABSOLUTE = True
} else {
@ -54,13 +54,13 @@ contains(CMAKE_LIB_DIR, "^\.\.") {
}
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_IS_ABSOLUTE = True
}
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_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\")
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)
!!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_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 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
\"${_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}\"
)
!!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
\"$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/${Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING}\"
\"$${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()
!!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
!!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()

View File

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

View File

@ -89,3 +89,12 @@ load(qt_targets)
}
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("This is not a bug, but a result of using Qt internals. You have been warned!")
}
qtAddRpathLink($$QT $$QT_PRIVATE)
wince*:static:gui {
QTLIB += qmenu_wce.res

View File

@ -20,7 +20,10 @@
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
# this repo's module pris' location to the other repos.
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_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
QTDIR = $$[QT_HOST_PREFIX]
exists($$QTDIR/.qmake.cache) {
!prefix_build {
QTDIR = $$[QT_HOST_PREFIX]
# Permit modules to enforce being built outside QTDIR ...
!force_independent: MODULE_BASE_OUTDIR = $$QTDIR
# ... though this sort of breaks the idea.

View File

@ -24,6 +24,13 @@ for(qmod, QMAKEMODULES): \
QDOC += -outputdir $$QMAKE_DOCS_OUTPUTDIR
!build_online_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
prepare_docs {
prepare_docs.commands += $$doc_command -prepare -no-link-errors

View File

@ -9,6 +9,22 @@
# 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)
!isEmpty(probase):!contains(probase, ^\\..*) {
for(ex, EXAMPLE_FILES): \
@ -42,34 +58,26 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
# Just for Qt Creator
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 += \
$$_PRO_FILE_ $$RC_FILE $$DEF_FILE \
$$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \
$$DBUS_ADAPTORS $$DBUS_INTERFACES
for(sf, 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
}
}
addInstallFiles(sources.files, $$sourcefiles)
sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase
INSTALLS += sources
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_/*)
for(i, thefiles): \
allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_)
for(i, sources.files): \
for(i, srcfiles): \
allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_)
for(i, SUBDIRS) {
sd = $$eval($${i}.file)
@ -84,4 +92,12 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
allfiles -= doc
!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): \
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
# to give access to sources or include files, and not for linking.
@ -190,11 +181,28 @@ defineTest(qtAddModules) {
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
defineTest(qtPrepareTool) {
$$1 = $$eval(QT_TOOL.$${2}.command)
isEmpty($$1) {
$$1 = $$[QT_HOST_BINS/get]/$$2
$$1 = $$[QT_HOST_BINS]/$$2
contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) {
exists($$eval($$1).bat) {
$$1 = $$eval($$1).bat

View File

@ -45,65 +45,7 @@ else: \
MODULE_DEFINE = QT_$${ucmodule}_LIB
MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES
load(qt_build_paths)
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)
load(qt_module_pris)
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
TEMPLATE = lib
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
@ -190,23 +132,26 @@ unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \
rplbase = $$[QT_INSTALL_PREFIX/get]
rplbase = $$MODULE_QMAKE_OUTDIR
include_replace.match = $$rplbase/include
include_replace.replace = $$[QT_INSTALL_HEADERS/raw]
lib_replace.match = $$rplbase/lib
lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
}
unix {
CONFIG += create_libtool explicitlib
QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace
QMAKE_LIBTOOL_LIBDIR = $$[QT_INSTALL_LIBS/raw]
QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace
}
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): \
QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module
}
@ -228,11 +173,6 @@ win32 {
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)
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
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
# qtPrepareTool() to work with the non-installed build.
!build_pass:!exists($$[QT_INSTALL_PREFIX]/.qmake.cache) {
!build_pass:prefix_build {
isEmpty(MODULE):MODULE = $$TARGET

View File

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

View File

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

View File

@ -834,7 +834,7 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
if(slsh != -1)
dst_prl = dst_prl.right(dst_prl.length() - slsh - 1);
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())
uninst.append("\n\t");
uninst.append("-$(DEL_FILE) \"" + dst_prl + "\"");

View File

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

View File

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

View File

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

View File

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

View File

@ -239,7 +239,7 @@ bool QMakeParser::read(ProFile *pro)
}
QByteArray bcont = file.readAll();
if (bcont.startsWith(QByteArray("\xef\xbb\xbf"))) {
if (bcont.startsWith("\xef\xbb\xbf")) {
// UTF-8 BOM will cause subtle errors
m_handler->message(QMakeParserHandler::ParserIoError,
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];
if (uce[nlen + 2] == TokFuncTerminator) {
m_tmp.setRawData((QChar *)uce + 2, nlen);
if (m_tmp == statics.strhost_build) {
if (m_tmp == statics.strhost_build)
m_proFile->setHostBuild(true);
} else {
else
parseError(fL1S("Unknown option() %1.").arg(m_tmp));
}
return;
}
}

View File

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

View File

@ -207,7 +207,7 @@ struct Option
};
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); }

View File

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

View File

@ -81,6 +81,29 @@ syncqt.files = $$PWD/bin/syncqt
equals(QMAKE_HOST.os, Windows):syncqt.files += $$PWD/bin/syncqt.bat
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.path = $$[QT_HOST_DATA]/mkspecs
mkspecs.files = \

View File

@ -15,7 +15,8 @@ isEmpty(ANGLE_DIR) {
win32 {
GNUTOOLS_DIR=$$PWD/../../../../gnuwin32/bin
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
description = Qt Concurrent Reference Documentation
url = http://qt-project.org/doc/qtconcurrent
version = 5.1.0
url = http://qt-project.org/doc/qt-$QT_VER/qtconcurrent
version = $QT_VERSION
examplesinstallpath = qtconcurrent
qhp.projects = QtConcurrent
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.indexTitle = Qt Concurrent
qhp.QtConcurrent.indexRoot =
qhp.QtConcurrent.filterAttributes = qtconcurrent 5.1.0 qtrefdoc
qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent 5.1.0
qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent 5.1.0
qhp.QtConcurrent.filterAttributes = qtconcurrent $QT_VERSION qtrefdoc
qhp.QtConcurrent.customFilters.Qt.name = QtConcurrent $QT_VERSION
qhp.QtConcurrent.customFilters.Qt.filterAttributes = qtconcurrent $QT_VERSION
qhp.QtConcurrent.subprojects = classes
qhp.QtConcurrent.subprojects.classes.title = C++ Classes

View File

@ -94,6 +94,18 @@ function(test_module_includes)
include_directories(\${Qt5${qtmodule}_INCLUDE_DIRS})
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}")
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)
add_executable(Qt5::qmake IMPORTED)
set_target_properties(Qt5::qmake PROPERTIES
!!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
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\"
!!ENDIF
@ -18,7 +16,7 @@ if (NOT TARGET Qt5::moc)
set_target_properties(Qt5::moc PROPERTIES
!!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
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\"
!!ENDIF
@ -32,7 +30,7 @@ if (NOT TARGET Qt5::rcc)
set_target_properties(Qt5::rcc PROPERTIES
!!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
IMPORTED_LOCATION \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\"
!!ENDIF
@ -44,9 +42,9 @@ set(Qt5Core_MOC_EXECUTABLE Qt5::moc)
set(Qt5Core_RCC_EXECUTABLE Qt5::rcc)
!!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
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
!!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_target_properties(Qt5::WinMain PROPERTIES
!!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
IMPORTED_LOCATION_DEBUG \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\"
!!ENDIF
@ -91,7 +89,7 @@ if (NOT TARGET Qt5::WinMain)
set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(Qt5::WinMain PROPERTIES
!!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
IMPORTED_LOCATION_RELEASE \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\"
!!ENDIF

View File

@ -234,7 +234,7 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.9)
foreach(_module ${_qt5_modules})
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)
message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
endif()

View File

@ -54,7 +54,10 @@ HOST_BINS = $$[QT_HOST_BINS/raw]
host_bins.name = 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.output = $$DESTDIR/cmake/Qt5Core/Qt5CTestMacros.cmake

View File

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

View File

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

View File

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

View File

@ -480,7 +480,8 @@ QObject::disconnect(lineEdit, &QLineEdit::textChanged,
//! [48]
//! [49]
if (isSignalConnected(QMetaMethod::fromSignal(&MyObject::valueChanged))) {
static const QMetaMethod valueChangedSignal = QMetaMethod::fromSignal(&MyObject::valueChanged);
if (isSignalConnected(valueChangedSignal)) {
QByteArray data;
data = get_the_value(); // expensive operation
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
**
** 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
{
Q_OBJECT
QThread workerThread;
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
{
Worker *worker = new Worker;
QThread *workerThread = new QThread(this);
connect(workerThread, &QThread::started, worker, &Worker::doWork);
connect(workerThread, &QThread::finished, worker, &Worker::deleteLater);
worker->moveToThread(workerThread);
// 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();
Q_OBJECT
QThread workerThread;
public:
Controller() {
Worker *worker = new Worker;
worker->moveToThread(&workerThread);
connect(workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::operate, worker, &Worker::doWork);
connect(worker, &Worker::resultReady, this, &Controller::handleResults);
workerThread.start();
}
~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]
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"))
...
//! [26]
@ -286,16 +286,16 @@ QByteArray z = x.mid(5); // z == "pineapples"
//! [30]
QByteArray x("Qt by NOKIA");
QByteArray x("Qt by DIGIA");
QByteArray y = x.toLower();
// y == "qt by nokia"
// y == "qt by digia"
//! [30]
//! [31]
QByteArray x("Qt by NOKIA");
QByteArray x("Qt by DIGIA");
QByteArray y = x.toUpper();
// y == "QT BY NOKIA"
// y == "QT BY DIGIA"
//! [31]

View File

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

View File

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