Merge remote-tracking branch 'origin/4.12' into 4.13

Conflicts:
	share/qtcreator/debugger/lldbbridge.py

Change-Id: Ia444f6424fb35b9a539e157afcee868161535272
This commit is contained in:
Eike Ziller
2020-07-06 16:23:13 +02:00
22 changed files with 224 additions and 109 deletions

51
dist/changes-4.12.4.md vendored Normal file
View File

@@ -0,0 +1,51 @@
Qt Creator 4.12.4
=================
Qt Creator version 4.12.4 contains bug fixes.
The most important changes are listed in this document. For a complete
list of changes, see the Git log for the Qt Creator sources that
you can check out from the public Git repository. For example:
git clone git://code.qt.io/qt-creator/qt-creator.git
git log --cherry-pick --pretty=oneline origin/v4.12.3..v4.12.4
Editing
-------
* Fixed crash when searching in binary files (QTCREATORBUG-21473, QTCREATORBUG-23978)
### QML
* Fixed completion of signals from singletons (QTCREATORBUG-24124)
* Fixed import scanning after code model reset (QTCREATORBUG-24082)
Projects
--------
### CMake
* Fixed search for `ninja` when it is installed with the online installer (QTCREATORBUG-24082)
Platforms
---------
### iOS
* Fixed C++ debugging on devices (QTCREATORBUG-23995)
### MCU
* Adapted to changes in Qt for MCU 1.3
Credits for these changes go to:
--------------------------------
Alessandro Portale
André Pönitz
Christian Kamm
Christian Stenger
Eike Ziller
Fawzi Mohamed
Friedemann Kleint
Robert Löhning
Venugopal Shivashankar

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -49,9 +49,6 @@
For a list of Qt for MCU reference implementations, see the
\l{Qt for MCUs - Supported Target Platforms}{Qt for MCUs} documentation.
You use the \l{Connecting Bare Metal Devices}{Bare metal plugin} to connect
to a debug server provider for debugging on MCUs.
\section1 Requirements
To use \QC to develop QML applications for MCUs, you need the following:
@@ -61,33 +58,40 @@
\li The Bare Metal plugin
\li \l{https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm}
{GNU ARM Embedded Toolchain}
\li The hardware-specific requirements vary depending on the hardware platform you are developing for.
For more information see:
\list
\li \l{Getting Started on NXP}
\li \l{Getting Started on STM}
\li \l{Getting Started on Renesas}
\endlist
\endlist
The hardware-specific requirements vary depending on the hardware platform you are developing for.
For more information see:
\list
\li \l{Getting Started on NXP}
\li \l{Getting Started on STM}
\li \l{Getting Started on Renesas}
\endlist
\section1 Setting Up the Development Environment
You must download and install the required software and create connections
between \QC and MCUs. For more information, see \l{Getting Started on Windows}.
between \QC and MCUs. The following subsections guide you through the
setup process.
\section2 Enabling Bare Metal and MCU Plugins
\section2 MCU and Bare Metal Plugins
To be able to develop for MCUs, you must enable the Bare Metal and MCU
plugins:
To be able to develop applications for MCUs, you need the MCU plugin at least.
This plugin is enabled automatically by the installer when you install the
Qt for MCUs SDK.
The Bare Metal plugin is optional unless you want to configure the
debug server provider settings explicitly. For more information
see \l{Connecting Bare Metal Devices}.
To explicitly disable or enable any of these plugins, follow these
instructions:
\list 1
\li Select \uicontrol Help > \uicontrol {About Plugins} >
\uicontrol {Device Support} > \uicontrol {Bare Metal} and
\uicontrol {MCU Support} to enable the Bare Metal and MCU
plugins.
\li Select \uicontrol {Restart Now} to restart \QC and load the plugins.
\li Create connections for debugging on the MCU board, as described in
\l{Connecting Bare Metal Devices}.
\endlist
\section2 Specifying MCU Settings
@@ -103,27 +107,30 @@
to the directory where you installed Qt for MCUs SDK.
\li In the \uicontrol {Targets supported by the Qt for MCUs SDK}
field, select your MCU board.
\li In the \uicontrol {GNU ARM Embedded Toolchain} field,
specify the path to the directory where you installed the
tool chain.
\li For STM32 boards:
\li In the \uicontrol Requirements section, ensure that the
platform-specific requirements are met. This varies depending
on the target chosen:
\list
\li In the \uicontrol {STM32Cube SDK} field, specify the
path to the directory where you installed the SDK.
\li In the \uicontrol {STM32Cube Programmer} field,
specify the path to the directory where you
installed the tool.
\li For STM32 targets:
\list
\li The \uicontrol {GNU ARM Embedded Toolchain} path.
\li The \uicontrol {STM32CubeProgrammer} install path.
\endlist
\li For NXP targets:
\list
\li The \uicontrol {GNU ARM Embedded Toolchain} path.
\li The \uicontrol {MCUXpresso IDE} install path.
\endlist
\li For Renesas targets:
\list
\li The \uicontrol {Green Hills Compiler} path.
\li The \uicontrol {Renesas Graphics Library} path.
\endlist
\endlist
\li For NXP boards:
\list
\li In the \uicontrol {NXP EVKB-IMXRT 1050 SDK} field,
specify the path to the directory where you
installed the SDK.
\li In the \uicontrol {SEGGER JLink} field, specify the
path to the directory where you installed the tool.
\endlist
\li Select \uicontrol Apply to save the settings and to generate
a MCU device and kit.
\li Select \uicontrol{Create Kit} to create a kit. If you have
an older kit for the selected target, remove it first using
\uicontrol{Remove Kit}.
\li Select \uicontrol Apply to save the settings.
\endlist
\section2 Adding MCU Devices

View File

@@ -963,21 +963,25 @@ class Dumper(DumperBase):
elif (self.startMode_ == DebuggerStartMode.AttachToRemoteServer
or self.startMode_ == DebuggerStartMode.AttachToRemoteProcess):
if self.platform_ == 'remote-ios':
self.process = self.target.ConnectRemote(
self.debugger.GetListener(),
self.remoteChannel_, None, error)
else:
f = lldb.SBFileSpec()
f.SetFilename(self.executable_)
f = lldb.SBFileSpec()
f.SetFilename(self.executable_)
launchInfo = lldb.SBLaunchInfo(self.processArgs_)
#launchInfo.SetWorkingDirectory(self.workingDirectory_)
launchInfo.SetWorkingDirectory('/tmp')
if self.platform_ == 'remote-android':
launchInfo.SetWorkingDirectory('/data/local/tmp')
launchInfo.SetEnvironmentEntries(self.environment_, False)
launchInfo.SetExecutableFile(f, True)
launchInfo = lldb.SBLaunchInfo(self.processArgs_)
#launchInfo.SetWorkingDirectory(self.workingDirectory_)
launchInfo.SetWorkingDirectory('/tmp')
if self.platform_ == 'remote-android':
launchInfo.SetWorkingDirectory('/data/local/tmp')
launchInfo.SetEnvironmentEntries(self.environment_, False)
launchInfo.SetExecutableFile(f, True)
DumperBase.warn("TARGET: %s" % self.target)
self.process = self.target.Launch(launchInfo, error)
DumperBase.warn("PROCESS: %s" % self.process)
DumperBase.warn("TARGET: %s" % self.target)
self.process = self.target.Launch(launchInfo, error)
DumperBase.warn("PROCESS: %s" % self.process)
if not error.Success():
self.report(self.describeError(error))

View File

@@ -1622,10 +1622,15 @@ void ModelManagerInterface::resetCodeModel()
// reset the snapshot
m_validSnapshot = Snapshot();
m_newestSnapshot = Snapshot();
m_scannedPaths.clear();
}
// start a reparse thread
updateSourceFiles(documents, false);
// rescan import directories
m_shouldScanImports = true;
updateImportPaths();
}
} // namespace QmlJS

View File

@@ -77,8 +77,11 @@ BuildDirParameters::BuildDirParameters(CMakeBuildConfiguration *bc)
environment.set("ICECC", "no");
CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings();
if (!settings->ninjaPath().isEmpty())
environment.appendOrSetPath(settings->ninjaPath().toString());
if (!settings->ninjaPath().isEmpty()) {
const Utils::FilePath setting = settings->ninjaPath();
const Utils::FilePath path = setting.toFileInfo().isFile() ? setting.parentDir() : setting;
environment.appendOrSetPath(path.toString());
}
cmakeToolId = CMakeKitAspect::cmakeToolId(k);
}

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -61,7 +61,7 @@
namespace McuSupport {
namespace Internal {
static const int KIT_VERSION = 5; // Bumps up whenever details in Kit creation change
static const int KIT_VERSION = 6; // Bumps up whenever details in Kit creation change
static QString packagePathFromSettings(const QString &settingsKey,
QSettings::Scope scope = QSettings::UserScope,
@@ -95,6 +95,11 @@ QString McuPackage::label() const
return m_label;
}
QString McuPackage::defaultPath() const
{
return m_defaultPath;
}
QString McuPackage::detectionPath() const
{
return m_detectionPath;
@@ -331,10 +336,12 @@ QVariant McuToolChainPackage::debuggerId() const
return debuggerId;
}
McuTarget::McuTarget(const QString &vendor, const QString &platform, OS os,
McuTarget::McuTarget(const QVersionNumber &qulVersion, const QString &vendor,
const QString &platform, OS os,
const QVector<McuPackage *> &packages,
const McuToolChainPackage *toolChainPackage)
: m_vendor(vendor)
: m_qulVersion(qulVersion)
, m_vendor(vendor)
, m_qulPlatform(platform)
, m_os(os)
, m_packages(packages)
@@ -374,6 +381,11 @@ bool McuTarget::isValid() const
});
}
QVersionNumber McuTarget::qulVersion() const
{
return m_qulVersion;
}
int McuTarget::colorDepth() const
{
return m_colorDepth;
@@ -450,9 +462,9 @@ void McuSupportOptions::deletePackagesAndTargets()
mcuTargets.clear();
}
const QVersionNumber &McuSupportOptions::supportedQulVersion()
const QVersionNumber &McuSupportOptions::minimalQulVersion()
{
static const QVersionNumber v({1, 2});
static const QVersionNumber v({1, 3});
return v;
}
@@ -493,7 +505,7 @@ static void setKitProperties(const QString &kitName, ProjectExplorer::Kit *k,
k->setValue(KIT_MCUTARGET_VENDOR_KEY, mcuTarget->vendor());
k->setValue(KIT_MCUTARGET_MODEL_KEY, mcuTarget->qulPlatform());
k->setValue(KIT_MCUTARGET_COLORDEPTH_KEY, mcuTarget->colorDepth());
k->setValue(KIT_MCUTARGET_SDKVERSION_KEY, McuSupportOptions::supportedQulVersion().toString());
k->setValue(KIT_MCUTARGET_SDKVERSION_KEY, mcuTarget->qulVersion().toString());
k->setValue(KIT_MCUTARGET_KITVERSION_KEY, KIT_VERSION);
k->setValue(KIT_MCUTARGET_OS_KEY, static_cast<int>(mcuTarget->os()));
k->setAutoDetected(true);
@@ -626,7 +638,7 @@ QString McuSupportOptions::kitName(const McuTarget *mcuTarget)
? "Desktop"
: mcuTarget->qulPlatform();
return QString::fromLatin1("Qt for MCUs %1 - %2%3%4")
.arg(supportedQulVersion().toString(), targetName, os, colorDepth);
.arg(mcuTarget->qulVersion().toString(), targetName, os, colorDepth);
}
QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTarget)
@@ -636,8 +648,6 @@ QList<ProjectExplorer::Kit *> McuSupportOptions::existingKits(const McuTarget *m
return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) {
return kit->isAutoDetected()
&& kit->value(KIT_MCUTARGET_KITVERSION_KEY) == KIT_VERSION
&& kit->value(KIT_MCUTARGET_SDKVERSION_KEY) ==
McuSupportOptions::supportedQulVersion().toString()
&& (!mcuTarget || (
kit->value(KIT_MCUTARGET_VENDOR_KEY) == mcuTarget->vendor()
&& kit->value(KIT_MCUTARGET_MODEL_KEY) == mcuTarget->qulPlatform()

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -64,6 +64,7 @@ public:
QString path() const;
QString label() const;
QString defaultPath() const;
QString detectionPath() const;
Status status() const;
void setDownloadUrl(const QString &url);
@@ -135,9 +136,11 @@ public:
FreeRTOS
};
McuTarget(const QString &vendor, const QString &platform, OS os,
const QVector<McuPackage *> &packages, const McuToolChainPackage *toolChainPackage);
McuTarget(const QVersionNumber &qulVersion, const QString &vendor, const QString &platform,
OS os, const QVector<McuPackage *> &packages,
const McuToolChainPackage *toolChainPackage);
QVersionNumber qulVersion() const;
QString vendor() const;
QVector<McuPackage *> packages() const;
const McuToolChainPackage *toolChainPackage() const;
@@ -148,6 +151,7 @@ public:
bool isValid() const;
private:
const QVersionNumber m_qulVersion;
const QString m_vendor;
const QString m_qulPlatform;
const OS m_os = OS::BareMetal;
@@ -181,7 +185,7 @@ public:
static void registerQchFiles();
static void registerExamples();
static const QVersionNumber &supportedQulVersion();
static const QVersionNumber &minimalQulVersion();
private:
void deletePackagesAndTargets();

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,6 +1,6 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
@@ -59,8 +59,8 @@ static QString findInProgramFiles(const QString &folder)
McuPackage *createQtForMCUsPackage()
{
auto result = new McuPackage(
McuPackage::tr("Qt for MCUs %1 SDK").arg(
McuSupportOptions::supportedQulVersion().toString()),
McuPackage::tr("Qt for MCUs %1+ SDK").arg(
McuSupportOptions::minimalQulVersion().toString()),
QDir::homePath(),
Utils::HostOsInfo::withExecutableSuffix("bin/qmltocpp"),
Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK);
@@ -202,14 +202,36 @@ static McuPackage *createMcuXpressoIdePackage()
return result;
}
static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar)
static McuPackage *createBoardSdkPackage(const QString &envVar)
{
const QString envVarPrefix = envVar.chopped(strlen("_FREERTOS_DIR"));
const QString envVarPrefix = envVar.chopped(strlen("_SDK_PATH"));
const QString defaultPath =
qEnvironmentVariableIsSet(envVar.toLatin1()) ?
qEnvironmentVariable(envVar.toLatin1()) : QDir::homePath();
auto result = new McuPackage(
QString::fromLatin1("MCU SDK (%1)").arg(envVarPrefix),
defaultPath,
{},
envVar);
result->setEnvironmentVariableName(envVar);
return result;
}
static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const QString &boardSdkDir,
const QString &freeRTOSBoardSdkSubDir)
{
const QString envVarPrefix = envVar.chopped(strlen("_FREERTOS_DIR"));
QString defaultPath;
if (qEnvironmentVariableIsSet(envVar.toLatin1()))
defaultPath = qEnvironmentVariable(envVar.toLatin1());
else if (!boardSdkDir.isEmpty() && !freeRTOSBoardSdkSubDir.isEmpty())
defaultPath = boardSdkDir + "/" + freeRTOSBoardSdkSubDir;
else
defaultPath = QDir::homePath();
auto result = new McuPackage(
QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix),
defaultPath,
@@ -229,6 +251,7 @@ struct McuTargetDescription
QString toolchainId;
QString boardSdkEnvVar;
QString freeRTOSEnvVar;
QString freeRTOSBoardSdkSubDir;
};
static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescription> &descriptions,
@@ -246,13 +269,15 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
{{"Renesas"}, createRGLPackage()}
};
QHash<QString, McuPackage *> boardSdkPkgs;
QHash<QString, McuPackage *> freeRTOSPkgs;
QVector<McuTarget *> mcuTargets;
for (const auto &desc : descriptions) {
McuToolChainPackage *tcPkg = tcPkgs.value(desc.toolchainId);
if (desc.toolchainId == "desktop") {
auto mcuTarget = new McuTarget(desc.platformVendor, desc.platform,
auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion),
desc.platformVendor, desc.platform,
McuTarget::OS::Desktop, {}, tcPkg);
mcuTargets.append(mcuTarget);
continue;
@@ -262,19 +287,32 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
QVector<McuPackage*> required3rdPartyPkgs = {
vendorPkgs.value(desc.platformVendor), tcPkg
};
QString boardSdkDefaultPath;
if (!desc.boardSdkEnvVar.isEmpty()
&& desc.boardSdkEnvVar != "RGL_DIR") { // Already included in vendorPkgs
if (!boardSdkPkgs.contains(desc.boardSdkEnvVar)) {
auto boardSdkPkg = createBoardSdkPackage(desc.boardSdkEnvVar);
boardSdkPkgs.insert(desc.boardSdkEnvVar, boardSdkPkg);
}
auto boardSdkPkg = boardSdkPkgs.value(desc.boardSdkEnvVar);
boardSdkDefaultPath = boardSdkPkg->defaultPath();
required3rdPartyPkgs.append(boardSdkPkg);
}
if (os == McuTarget::OS::FreeRTOS) {
if (desc.freeRTOSEnvVar.isEmpty()) {
continue;
} else {
if (!freeRTOSPkgs.contains(desc.freeRTOSEnvVar)) {
auto freeRTOSPkg = createFreeRTOSSourcesPackage(desc.freeRTOSEnvVar);
freeRTOSPkgs.insert(desc.freeRTOSEnvVar, freeRTOSPkg);
freeRTOSPkgs.insert(desc.freeRTOSEnvVar, createFreeRTOSSourcesPackage(
desc.freeRTOSEnvVar, boardSdkDefaultPath,
desc.freeRTOSBoardSdkSubDir));
}
required3rdPartyPkgs.append(freeRTOSPkgs.value(desc.freeRTOSEnvVar));
}
}
auto mcuTarget = new McuTarget(desc.platformVendor, desc.platform, os,
auto mcuTarget = new McuTarget(QVersionNumber::fromString(desc.qulVersion),
desc.platformVendor, desc.platform, os,
required3rdPartyPkgs, tcPkg);
if (desc.colorDepths.count() > 1)
mcuTarget->setColorDepth(colorDepth);
@@ -286,6 +324,7 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
packages->append(Utils::transform<QVector<McuPackage *> >(
tcPkgs.values(), [&](McuToolChainPackage *tcPkg) { return tcPkg; }));
packages->append(vendorPkgs.values().toVector());
packages->append(boardSdkPkgs.values().toVector());
packages->append(freeRTOSPkgs.values().toVector());
return mcuTargets;
@@ -297,24 +336,13 @@ static QFileInfoList targetDescriptionFiles(const Utils::FilePath &dir)
return kitsDir.entryInfoList();
}
static QString freeRTOSEnvVarForPlatform(const QString &platform)
{
if (platform == "STM32F769I-DISCOVERY" || platform == "STM32F7508-DISCOVERY")
return {"STM32F7_FREERTOS_DIR"};
else if (platform == "MIMXRT1050-EVK")
return {"IMXRT1050_FREERTOS_DIR"};
else if (platform == "MIMXRT1064-EVK")
return {"IMXRT1064_FREERTOS_DIR"};
return {};
}
static McuTargetDescription parseDescriptionJson(const QByteArray &data)
{
const QJsonDocument document = QJsonDocument::fromJson(data);
const QJsonObject target = document.object();
const QJsonObject toolchain = target.value("toolchain").toObject();
const QJsonObject boardSdk = target.value("boardSdk").toObject();
const QJsonObject freeRTOS = target.value("freeRTOS").toObject();
const QString platform = target.value("platform").toString();
@@ -328,8 +356,9 @@ static McuTargetDescription parseDescriptionJson(const QByteArray &data)
target.value("platformVendor").toString(),
colorDepthsVector,
toolchain.value("id").toString(),
boardSdk.value("boardSdkEnvVar").toString(),
freeRTOSEnvVarForPlatform(platform) // Workaround for UL-2514: Missing FreeRTOS information
boardSdk.value("envVar").toString(),
freeRTOS.value("envVar").toString(),
freeRTOS.value("boardSdkSubDir").toString()
};
}
@@ -343,16 +372,17 @@ void targetsAndPackages(const Utils::FilePath &dir, QVector<McuPackage *> *packa
if (!file.open(QFile::ReadOnly))
continue;
const McuTargetDescription desc = parseDescriptionJson(file.readAll());
if (!McuSupportOptions::supportedQulVersion()
.isPrefixOf(QVersionNumber::fromString(desc.qulVersion)))
if (QVersionNumber::fromString(desc.qulVersion) < McuSupportOptions::minimalQulVersion())
return; // Invalid version means invalid SDK installation.
descriptions.append(desc);
}
// Workaround for missing JSON file for Desktop target:
if (dir.pathAppended("/lib/QulQuickUltralite_QT_32bpp_Windows_Release.lib").exists()) {
descriptions.prepend({McuSupportOptions::supportedQulVersion().toString(),
{"Qt"}, {"Qt"}, {32}, {"desktop"}, {}, {}});
const QString qulVersion = descriptions.empty() ?
McuSupportOptions::minimalQulVersion().toString()
: descriptions.first().qulVersion;
descriptions.prepend({qulVersion, {"Qt"}, {"Qt"}, {32}, {"desktop"}, {}, {}, {}});
}
mcuTargets->append(targetsFromDescriptions(descriptions, packages));

View File

@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
** Contact: BlackBerry (qt@blackberry.com)
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**

View File

@@ -78,6 +78,7 @@ def setKeyboardShortcutForAboutQtC():
modelIndex = waitForObject("{column='0' text='AboutQtCreator' type='QModelIndex' "
"container={column='0' text='QtCreator' type='QModelIndex' "
"container=%s}}" % objectMap.realName(treewidget))
treewidget.scrollTo(modelIndex)
mouseClick(modelIndex)
shortcutGB = "{title='Shortcut' type='QGroupBox' unnamed='1' visible='1'}"
record = waitForObject("{container=%s type='Core::Internal::ShortcutButton' unnamed='1' "

View File

@@ -130,5 +130,5 @@ def main():
test.fail("The checked out project was not being opened.",
str(waitForObject(":Cannot Open Project_QTextEdit").plainText))
clickButton(waitForObject(":Cannot Open Project.OK_QPushButton"))
verifyVersionControlView(targetDir, button == "Cancel immediately")
verifyVersionControlView(targetDir, button != ":Git Repository Clone.Finish_QPushButton")
invokeMenuItem("File", "Exit")