Commit ddd9e96a authored by Eike Ziller's avatar Eike Ziller

Merge remote-tracking branch 'origin/4.4'

 Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/libs/utils/utils-lib.pri
	src/plugins/clangcodemodel/clangbackendipcintegration.h
	src/shared/qbs

Change-Id: I240e89afc76d8f40ce69d66683014b603f714707
parents f2d2a6c6 7ef365d7
......@@ -80,8 +80,8 @@
\li In the \uicontrol Projects mode, select a \l{glossary-buildandrun-kit}
{kit} with Qt version 4.7.4 or later.
\note To profile applications on devices, you must install Qt 4.7.4
or later libraries on them.
\note To profile applications on \l{glossary-device}{devices}, you
must install Qt 4.7.4 or later libraries on them.
\li Select \uicontrol {Analyze > QML Profiler} to profile the current
application.
......
......@@ -120,7 +120,7 @@
or newer.
For remote debugging using GDB and GDB server, the minimum supported version
of GDB server on the target device is 7.0.
of GDB server on the target \l{glossary-device}{device} is 7.0.
\section2 Supported CDB Versions
......
......@@ -995,8 +995,12 @@
To get started with implementing debugging helpers for your own data types,
you can put their implementation into the file
\c share/qtcreator/debugger/personaltypes.py in your \QC installation. The
file contains one example implementation:
\c share/qtcreator/debugger/personaltypes.py in your Qt installation or
stand-alone \QC installation. On \macos, the file is bundled into the
\QC application package, where it is located in the
\c Contents/resources/debugger folder.
The \c personaltypes.py file contains one example implementation:
\quotefromfile ../../share/qtcreator/debugger/personaltypes.py
\skipto qdump__
......@@ -1009,7 +1013,8 @@
\li Open the \c share/qtcreator/debugger/personaltypes.py file for
editing. For example, if your Qt installation is located in the
\c Qt5 directory on Windows, look in
\c C:\Qt5\Tools\QtCreator\share\qtcreator\debugger.
\c C:\Qt5\Tools\QtCreator\share\qtcreator\debugger. On \macos, look
in \c {Qt5/Qt Creator.app/Contents/resources/debugger}.
\li Add your dumper implementation to the end of the \c personaltypes.py
file. For more information about implementing debugging helpers,
......
......@@ -75,8 +75,8 @@
\li Select \uicontrol {Build > Rebuild Project} to clean and rebuild the
project.
\li To debug applications on devices, check that Qt 5.0, or later,
libraries are installed on the device and
\li To debug applications on \l{glossary-device}{devices}, check that
Qt 5.0, or later, libraries are installed on the device and
\l{Running on Multiple Platforms}{select the corresponding kit for the device}
before you start debugging.
......
......@@ -255,5 +255,6 @@
\QC stores copied text in clipboard history. To retrieve clips from the
history, press \key {Ctrl+Shift+V} until the clip appears.
The number of clips in the history is fixed to 10.
*/
......@@ -378,7 +378,7 @@
example, information about missing DLLs.
\li \uicontrol Deployment - Errors encountered between building an application
successfully and starting it on a device.
successfully and starting it on a \l{glossary-device}{device}.
\li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated
by \l{Showing Task List Files in Issues Pane}
......
......@@ -55,7 +55,7 @@
\li \l{Supported Platforms}
You can install and run \QC on several operating systems to create
applications for multiple desktop, embedded, and mobile device
applications for multiple desktop and \l{glossary-device}{device}
platforms.
\li \l{Using Other Build Systems}
......
......@@ -73,7 +73,8 @@
For more information, see \l{Adding Kits}.
Each kit consists of a set of values that define one environment, such as a
device, compiler, and Qt version. If you know you have installed a Qt
\l{glossary-device}{device}, compiler, and Qt version. If you know you have
installed a Qt
version, but it is not listed in \uicontrol Tools > \uicontrol Options >
\uicontrol {Build & Run} > \uicontrol {Qt Versions}, you must add it.
......@@ -84,7 +85,7 @@
For more information, see \l{Adding Compilers}.
You can connect mobile devices to the development PC to run, debug, and
You can connect devices to the development PC to run, debug, and
analyze applications on them from \QC. You can connect the device to the
development PC via USB. Additionally, you can connect Linux-based devices
over a WLAN. You must also configure a connection between \QC and the
......@@ -93,7 +94,7 @@
To add devices, select \uicontrol Tools > \uicontrol Options >
\uicontrol Devices > \uicontrol Add.
For more information, see \l{Connecting Mobile Devices}.
For more information, see \l{Connecting Devices}.
\section1 Changing Keyboard Shortcuts
......
......@@ -35,13 +35,13 @@
\page creator-deployment.html
\nextpage creator-deploying-android.html
\title Deploying to Mobile Devices
\title Deploying to Devices
Deploy configurations in the \uicontrol Project mode
\uicontrol {Run Settings} handle the packaging of the application as an
executable and copying it to a location you want to run the executable at.
The files can be copied to a location in the file system of the development
PC or a mobile device.
PC or a \l{glossary-device}{device}.
\list
......
......@@ -81,15 +81,21 @@
\target glossary-deploy-config
\li Handles the packaging and copying of the necessary files to a
location you want to run the executable at. The files can be
copied to a location in the file system of the development PC,
an embedded device, or a mobile device.
copied to a location in the file system of the development PC or
a \l{glossary-device}{device}.
\row
\li Device
\target glossary-device
\li An embedded device or a mobile device. For more information, see
\l{Target Platforms}.
\row
\li Kit
\target glossary-buildandrun-kit
\li \QC groups build and run specific settings as kits to make
cross-platform development easier. Each kit consists of a set
of values that define one environment, such as a device,
of values that define one environment, such as a \l{glossary-device}{device},
tool chain, Qt version, and debugger command to use. Configure kits at
\uicontrol {Tools > Options > Build & Run > Kits}.
......@@ -107,8 +113,8 @@
\li Project
\target glossary-project
\li Groups together a set of source files, forms, and resource files
that you can build for, as well as deploy and run on different desktop,
embedded, and mobile device platforms, as
that you can build for, as well as deploy and run on different
desktop and \l{glossary-device}{device} platforms, as
specified by a \e {build configuration}, \e {deploy
configuration}, and \e {run configuration}.
......@@ -124,7 +130,8 @@
\target glossary-run-config
\li Starts the application in the location where it was copied by
the \e {deploy configuration}. By default, when you run a
project, \QC builds it, deploys it to the device specified in the selected
project, \QC builds it, deploys it to the
\l{glossary-device}{device} specified in the selected
\l{glossary-buildandrun-kit}{kit},
and runs it there. However, if you have not made any changes to
the project since you last built and deployed it, \QC simply
......
......@@ -35,12 +35,13 @@
\page creator-connecting-mobile.html
\nextpage creator-developing-android.html
\title Connecting Mobile Devices
\title Connecting Devices
You can connect mobile devices to the development PC to run, debug,
You can connect \l{glossary-device}{devices} to the development PC to run, debug,
and analyze applications built for them from \QC. When you install Qt for a
target platform, such as Android or QNX, the build and run settings for the
development targets might be set up automatically in \QC.
target platform, such as Android, QNX, or Universal Windows Platform (UWP),
the build and run settings for the development targets might be set up
automatically in \QC.
You can connect the device to the development PC using a USB connection.
Additionally, you can connect Linux-based devices by using a WLAN
......@@ -82,13 +83,6 @@
supported for QNX Neutrino devices, and requires the QNX SDK to be
installed on the development PC.
\li \l{Connecting UWP Devices}
You can build applications for the Universal Windows Platform (UWP)
and run them on any Windows 10 devices, such as PC, tablet, or
phone. You can install the necessary tool chains as part of Qt 5.9
or later.
\endlist
*/
......@@ -93,8 +93,8 @@
and commands used to build the project.
\QC provides support for running and deploying Qt applications
built for the desktop environment as well as embedded and
mobile devices. \l{glossary-buildandrun-kit}{Kits}, build,
built for the desktop environment or a \l{glossary-device}
{device}. \l{glossary-buildandrun-kit}{Kits}, build,
run, and deployment settings allow you to quickly switch between
different setups and target platforms.
......
......@@ -54,8 +54,7 @@
{List of Qt Quick Examples}
\row
\li Develop Qt applications for desktop and embedded or mobile
devices
\li Develop Qt applications for desktop and \l{glossary-device}{devices}
\li \l{https://www.qt.io/developers/}{Qt Developers}
\row
......
......@@ -47,7 +47,7 @@
is installed automatically and you should be ready to start
debugging after you create a new project. However, you can
change the setup to use debugging tools for Windows, for
example. You can connect embedded or mobile devices to your
example. You can connect \l{glossary-device}{devices} to your
development host and debug processes running on the devices.
\li \l{Analyzing Code}
......
......@@ -41,9 +41,9 @@
\QC provides support for running and deploying Qt applications built
for different target platforms, or using different compilers, debuggers, or
Qt versions.
\l{glossary-buildandrun-kit}{Kits} define the tools,
device type and other settings to use when building and running your project.
Qt versions. \l{glossary-buildandrun-kit}{Kits} define the tools,
\l{glossary-device}{device} type and other settings to use when building and
running your project.
\list
\li \l{Building for Multiple Platforms}
......@@ -61,17 +61,17 @@
if you have not made any changes to the project since you last
built and deployed it, \QC simply runs it again.
\li \l{Deploying to Mobile Devices}
\li \l{Deploying to Devices}
\e {Deploy configurations} handle the packaging and copying of
the necessary files to a location you want to run the executable
at. The files can be copied to a location in the file system of
the development PC or a mobile device.
the development PC or a device.
\li \l{Connecting Mobile Devices}
\li \l{Connecting Devices}
When you install tool chains for device types as part of a Qt distribution,
the build and run settings for mobile device types might be set up
the build and run settings for the devices might be set up
automatically. However, you might need to install and configure some
additional software on the devices to be able to connect to them
from the development PC.
......
......@@ -38,9 +38,8 @@
\title Building for Multiple Platforms
You can build applications for multiple target platforms, or using different
compilers,
debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits} define the tools,
device type and other settings to use.
compilers, debuggers or Qt versions. \l{glossary-buildandrun-kit}{Kits}
define the tools, \l{glossary-device}{device} type and other settings to use.
By default, when you run the application, you
automatically build and deploy it first.
......
......@@ -31,7 +31,7 @@
/*!
\contentspage {Qt Creator Manual}
\previouspage creator-developing-uwp.html
\previouspage creator-developing-qnx.html
\page creator-build-process-customizing.html
\nextpage creator-testing.html
......
......@@ -68,7 +68,7 @@
use qmake, Qbs, or CMake. This enables you to use \QC as a code editor and
to fully control the steps and commands used to build the project.
You can install tools for mobile devices as part of Qt distributions.
You can install tools for \l{glossary-device}{devices} as part of Qt distributions.
The \l{glossary-buildandrun-kit}{kits} and build and run settings for the
installed device types are set up automatically. However, you might need to
install and configure some additional software on the devices to be able to
......
......@@ -38,9 +38,9 @@
\title Adding Qt Versions
\QC allows you to have multiple versions of Qt installed on your development
PC and use different versions to build your projects.
For example, device manufacturers provide special Qt versions for developing
applications for their devices.
PC and use different versions to build your projects. For example,
\l{glossary-device}{device} manufacturers provide special Qt versions for
developing applications for their devices.
\QC automatically detects the Qt versions that are registered by
your system or by installers. To view detailed information for each Qt
......
......@@ -39,7 +39,7 @@
By default, running an application also builds it and deploys it to a
location from where it can be run on the desktop, on a device emulator or
simulator, or on an embedded device or a mobile device that is connected to
simulator, or on a \l{glossary-device}{device} that is connected to
the development PC.
To run executable files without deploying them first, select \uicontrol Build >
......
......@@ -66,8 +66,8 @@
information about managing kits, see \l{Adding Kits}.
Each kit consists of a set of values that define one environment, such as a
device, compiler, and Qt version. For more information, see
\l{Adding Qt Versions}, \l{Adding Compilers}, and \l{Adding Debuggers}.
\l{glossary-device}{device}, compiler, and Qt version. For more information,
see \l{Adding Qt Versions}, \l{Adding Compilers}, and \l{Adding Debuggers}.
To copy the build and run settings for a kit to another kit, select
\uicontrol {Copy Steps from Other Kit} in the context menu.
......
......@@ -73,8 +73,8 @@
\section1 Selecting the Run Environment
\QC automatically selects the environment used for running the application
based on the device type. You can edit the environment or select another
environment in the \uicontrol {Run Environment} section.
based on the \l{glossary-device}{device} type. You can edit the environment
or select another environment in the \uicontrol {Run Environment} section.
You can edit existing environment variables or add, reset and unset new
variables.
......
......@@ -38,9 +38,9 @@
\title Adding Kits
\QC groups settings used for building and running projects as kits
to make cross-platform and cross-configuration
development easier. Each kit consists of a set of values that define one
environment, such as a device, compiler, Qt version, and debugger command
to make cross-platform and cross-configuration development easier. Each kit
consists of a set of values that define one environment, such as a
\l{glossary-device}{device}, compiler, Qt version, and debugger command
to use, and some metadata, such as an icon and a name for the kit. Once
you have defined kits, you can select them to build and run projects.
......
......@@ -32,7 +32,7 @@
\contentspage {Qt Creator Manual}
\previouspage creator-developing-ios.html
\page creator-developing-qnx.html
\nextpage creator-developing-uwp.html
\nextpage creator-build-process-customizing.html
\title Connecting QNX Devices
......
......@@ -143,20 +143,19 @@
\list
\li \l{Building for Multiple Platforms}
\li \l{Running on Multiple Platforms}
\li \l{Deploying to Mobile Devices}
\li \l{Deploying to Devices}
\list
\li \l{Deploying Applications to Android Devices}
\li \l{Deploying Applications to Embedded Linux Devices}
\li \l{Deploying Applications to QNX Neutrino Devices}
\endlist
\li \l{Connecting Mobile Devices}
\li \l{Connecting Devices}
\list
\li \l{Connecting Android Devices}
\li \l{Connecting Bare Metal Devices}
\li \l{Connecting Embedded Linux Devices}
\li \l{Connecting iOS Devices}
\li \l{Connecting QNX Devices}
\li \l{Connecting UWP Devices}
\endlist
\li \l{Customizing the Build Process}
\endlist
......
......@@ -96,8 +96,8 @@
\list
\li \l{Building for Multiple Platforms}
\li \l{Running on Multiple Platforms}
\li \l{Deploying to Mobile Devices}
\li \l{Connecting Mobile Devices}
\li \l{Deploying to Devices}
\li \l{Connecting Devices}
\endlist
\li \b {\l{Testing}}
\list
......
......@@ -88,7 +88,7 @@
Since Qt 5.7, \l {Qt Quick Controls 2} replace Qt Quick Controls 1 and
Qt Labs Controls. They provide lightweight QML types for creating performant
user interfaces for embedded and mobile devices.
user interfaces for \l{glossary-device}{devices}.
Qt Quick Controls 2 achieve improved efficiency by employing a simplified
\l {Styling Qt Quick Controls 2}{styling architecture} when compared to
......
......@@ -147,7 +147,8 @@
\list
\li C++ code
\li Resource files (.qrc)
\li Code needed for deploying applications to mobile or embedded devices
\li Code needed for deploying applications to \l{glossary-device}
{devices}
\endlist
To create a Qt Quick UI project:
......
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/
/*!
\contentspage {Qt Creator Manual}
\previouspage creator-developing-qnx.html
\page creator-developing-uwp.html
\nextpage creator-build-process-customizing.html
\title Connecting UWP Devices
You can build applications for the Universal Windows Platform (UWP) and run
them on any Windows 10 devices, such as PC, tablet, or phone.
\QC uses the integrated \c windeployqt and \c winrtrunner tools to deploy
and run applications. You can also run the tools manually from the command
line.
Since 5.3, the Qt installers add the Windows Runtime and Windows Phone Qt
versions to \QC and create the necessary kits. In Qt 5.9, the packages were
renamed as UWP packages.
\image creator-uwp-kits.png "UWP kits"
To connect UWP devices:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins} > \uicontrol {Device Support} >
\uicontrol WinRT to enable the experimental UWP plugin.
\li Restart \QC to be able to use the plugin.
\li To specify build settings:
\list 1
\li Open a project for an application you want to develop for the
device.
\li Select \uicontrol Projects > \uicontrol {Build & Run} to
enable a kit for building applications and running them on UWP
devices.
\endlist
\li Select \uicontrol Run to specify run settings.
Usually, you can use the default settings.
\endlist
*/
......@@ -91,9 +91,12 @@ bool OptionsParser::parse()
// probably a file or something
m_pmPrivate->arguments << m_currentArg;
}
if (PluginManager::testRunRequested()) {
m_isDependencyRefreshNeeded = true;
forceDisableAllPluginsExceptTestedAndForceEnabled();
}
if (m_isDependencyRefreshNeeded)
m_pmPrivate->resolveDependencies();
m_pmPrivate->enableOnlyTestedSpecs();
m_pmPrivate->enableDependenciesIndirectly();
return !m_hasError;
}
......@@ -260,6 +263,16 @@ bool OptionsParser::checkForUnknownOption()
return true;
}
void OptionsParser::forceDisableAllPluginsExceptTestedAndForceEnabled()
{
for (const PluginManagerPrivate::TestSpec &testSpec : m_pmPrivate->testSpecs)
testSpec.pluginSpec->d->setForceEnabled(true);
for (PluginSpec *spec : m_pmPrivate->pluginSpecs) {
if (!spec->isForceEnabled() && !spec->isRequired())
spec->d->setForceDisabled(true);
}
}
bool OptionsParser::nextToken(OptionsParser::TokenType type)
{
if (m_it == m_end) {
......
......@@ -60,6 +60,7 @@ private:
bool checkForPluginOption();
bool checkForProfilingOption();
bool checkForUnknownOption();
void forceDisableAllPluginsExceptTestedAndForceEnabled();
enum TokenType { OptionalToken, RequiredToken };
bool nextToken(TokenType type = OptionalToken);
......
......@@ -1488,6 +1488,7 @@ void PluginManagerPrivate::readPluginPaths()
pluginSpecs.append(spec);
}
resolveDependencies();
enableDependenciesIndirectly();
// ensure deterministic plugin load order by sorting
Utils::sort(pluginSpecs, &PluginSpec::name);
emit q->pluginsChanged();
......@@ -1495,42 +1496,19 @@ void PluginManagerPrivate::readPluginPaths()
void PluginManagerPrivate::resolveDependencies()
{
foreach (PluginSpec *spec, pluginSpecs) {
spec->d->enabledIndirectly = false; // reset, is recalculated below
foreach (PluginSpec *spec, pluginSpecs)
spec->d->resolveDependencies(pluginSpecs);
}
Utils::reverseForeach(loadQueue(), [](PluginSpec *spec) {
spec->d->enableDependenciesIndirectly();
});
}
void PluginManagerPrivate::enableOnlyTestedSpecs()
void PluginManagerPrivate::enableDependenciesIndirectly()
{
if (testSpecs.isEmpty())
return;
QList<PluginSpec *> specsForTests;
foreach (const TestSpec &testSpec, testSpecs) {
QList<PluginSpec *> circularityCheckQueue;
loadQueue(testSpec.pluginSpec, specsForTests, circularityCheckQueue);
// add plugins that must be force loaded when running tests for the plugin
// (aka "test dependencies")
QHashIterator<PluginDependency, PluginSpec *> it(testSpec.pluginSpec->dependencySpecs());
while (it.hasNext()) {
it.next();
if (it.key().type != PluginDependency::Test)
continue;
PluginSpec *depSpec = it.value();
circularityCheckQueue.clear();
loadQueue(depSpec, specsForTests, circularityCheckQueue);
}
}