Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev
This commit is contained in:
commit
e88011357e
@ -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
94
dist/changes-5.0.1
vendored
@ -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
119
dist/changes-5.0.2
vendored
Normal 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 *
|
||||
****************************************************************************
|
||||
|
@ -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]
|
||||
|
||||
|
@ -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" >
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(dbus))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = listnames \
|
||||
pingpong \
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(if(wince|embedded|x11):qtHaveModule(gui))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = styleexample raycasting flickable digiflip
|
||||
|
||||
|
@ -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]
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = \
|
||||
subdirs
|
||||
SUBDIRS = \
|
||||
|
@ -1,4 +1,4 @@
|
||||
****************************************************************************
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
# no QSharedMemory
|
||||
!vxworks:!qnx:SUBDIRS = sharedmemory
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(opengl))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
|
||||
contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2){
|
||||
|
@ -26,7 +26,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\example qtconcurrent/imagescaling
|
||||
\example imagescaling
|
||||
\title Image Scaling Example
|
||||
\brief Demonstrates how to asynchronously scale images.
|
||||
\ingroup qtconcurrentexamples
|
||||
|
@ -26,7 +26,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\example qtconcurrent/map
|
||||
\example map
|
||||
\title Map Example
|
||||
\brief Demonstrates how to scale images synchronously.
|
||||
\ingroup qtconcurrentexamples
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(concurrent))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = imagescaling \
|
||||
map \
|
||||
|
@ -26,7 +26,7 @@
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\example qtconcurrent/runfunction
|
||||
\example runfunction
|
||||
\title Run Function Example
|
||||
\brief Demonstrates how to run standard functions concurrently.
|
||||
\ingroup qtconcurrentexamples
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -1,2 +1,4 @@
|
||||
requires(contains(QT_BUILD_PARTS,tools):qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = tutorial1 tutorial2 tutorial3 tutorial4 tutorial5
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS = books \
|
||||
@ -19,4 +21,3 @@ SUBDIRS = books \
|
||||
}
|
||||
|
||||
EXAMPLE_FILES = connection.h
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
CONFIG += ordered
|
||||
SUBDIRS = contiguouscache \
|
||||
|
@ -1,2 +1,4 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = pinchzoom fingerpaint knobs dials
|
||||
|
@ -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/}.
|
||||
|
||||
*/
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -13,5 +13,5 @@ win32 {
|
||||
}
|
||||
|
||||
# install
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/tools/styleplugin
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin
|
||||
INSTALLS += target
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,3 +1,5 @@
|
||||
requires(qtHaveModule(widgets))
|
||||
|
||||
TEMPLATE = subdirs
|
||||
CONFIG += no_docs_target
|
||||
|
||||
|
@ -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."));
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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()
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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_))
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
121
mkspecs/features/qt_module_pris.prf
Normal file
121
mkspecs/features/qt_module_pris.prf
Normal 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
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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()) {
|
||||
|
@ -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;
|
||||
|
@ -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 + "\"");
|
||||
|
@ -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('?'))) {
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -99,6 +99,8 @@ public:
|
||||
QString pwd;
|
||||
QStringList precmds, preconfigs, postcmds, postconfigs;
|
||||
bool after;
|
||||
|
||||
void flush() { after = false; }
|
||||
};
|
||||
|
||||
class QMAKE_EXPORT QMakeGlobals
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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 ||
|
||||
|
@ -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); }
|
||||
|
@ -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;
|
||||
|
23
qtbase.pro
23
qtbase.pro
@ -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 = \
|
||||
|
@ -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:)=^)%)"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -535,7 +535,7 @@ CApaApplication *myApplicationFactory();
|
||||
|
||||
|
||||
//! [49]
|
||||
void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *);
|
||||
void myMessageHandler(QtMsgType, const QMessageLogContext &, const QString &);
|
||||
//! [49]
|
||||
|
||||
//! [50]
|
||||
|
@ -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]
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 ¶meter) {
|
||||
// ...
|
||||
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]
|
||||
|
@ -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]
|
||||
|
||||
|
||||
|
@ -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]
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
14
src/corelib/doc/snippets/resource-system/application.pro
Normal file
14
src/corelib/doc/snippets/resource-system/application.pro
Normal 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)
|
10
src/corelib/doc/snippets/resource-system/application.qrc
Normal file
10
src/corelib/doc/snippets/resource-system/application.qrc
Normal 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
Loading…
Reference in New Issue
Block a user