forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.12'
Conflicts: cmake/QtCreatorIDEBranding.cmake qbs/modules/qtc/qtc.qbs qtcreator_ide_branding.pri Change-Id: Ic39945a0e3e140a9467b4b4f572929257ff3a324
This commit is contained in:
@@ -460,7 +460,7 @@
|
|||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Perf events may be globally disabled on your system. The
|
\li Perf events may be globally disabled on your system. The
|
||||||
preconfigured Boot to Qt images come with perf events enabled. For
|
preconfigured Boot2Qt images come with perf events enabled. For
|
||||||
a custom configuration you need to make sure that the file
|
a custom configuration you need to make sure that the file
|
||||||
\c {/proc/sys/kernel/perf_event_paranoid} contains a value smaller
|
\c {/proc/sys/kernel/perf_event_paranoid} contains a value smaller
|
||||||
than \c {2}. For maximum flexibility in recording traces you can
|
than \c {2}. For maximum flexibility in recording traces you can
|
||||||
|
@@ -114,7 +114,7 @@
|
|||||||
You can use the experimental Qt Application Manager plugin
|
You can use the experimental Qt Application Manager plugin
|
||||||
(commercial only) to deploy, run, and debug applications on the
|
(commercial only) to deploy, run, and debug applications on the
|
||||||
local Linux PC, remote generic SSH Linux targets, or
|
local Linux PC, remote generic SSH Linux targets, or
|
||||||
\l{Embedded Devices}{embedded devices}.
|
\l{Boot2Qt Devices}{Boot2Qt devices}.
|
||||||
\endlist
|
\endlist
|
||||||
\endif
|
\endif
|
||||||
*/
|
*/
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -31,30 +31,21 @@
|
|||||||
You can develop applications for the following platforms:
|
You can develop applications for the following platforms:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
|
||||||
\li Desktop
|
\li Desktop
|
||||||
|
\li \l{Connecting Android Devices}{Android}
|
||||||
\li Android
|
\li \l{Connecting Bare Metal Devices}{Bare Metal}
|
||||||
|
\li Boot2Qt
|
||||||
\li Embedded
|
\li \l{Connecting Embedded Linux Devices}{Generic Remote Linux}
|
||||||
|
\li \l{Connecting iOS Devices}{iOS}
|
||||||
\li Generic remote Linux
|
\li \l{Connecting MCUs}{Microcontroller Units (MCU)} (commercial only)
|
||||||
|
\li \l{Connecting QNX Devices}{QNX}
|
||||||
\li iOS
|
\li \l{Qt for UWP}{Universal Windows Platform (UWP)}
|
||||||
|
\li \l{Building Applications for the Web}{WebAssembly}
|
||||||
\li Microcontroller Units (MCU)
|
|
||||||
|
|
||||||
\li QNX
|
|
||||||
|
|
||||||
\li Universal Windows Platform (UWP)
|
|
||||||
|
|
||||||
\li WebAssembly
|
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\section2 Embedded Devices
|
\section2 Boot2Qt Devices
|
||||||
|
|
||||||
The Boot to Qt stack can be made to run on a variety of hardware. For
|
The Boot2Qt stack can be made to run on a variety of hardware. For
|
||||||
Qt for Device Creation license holders, tooling is provided to customize the
|
Qt for Device Creation license holders, tooling is provided to customize the
|
||||||
contents of the stack as well as to take it into desired production
|
contents of the stack as well as to take it into desired production
|
||||||
hardware.
|
hardware.
|
||||||
@@ -65,8 +56,8 @@
|
|||||||
\l{https://doc.qt.io/QtForDeviceCreation/index.html}{Qt for Device Creation}
|
\l{https://doc.qt.io/QtForDeviceCreation/index.html}{Qt for Device Creation}
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
\note Since \QC 4.9, only Boot to Qt version 5.9 and later are supported.
|
\note Since \QC 4.9, only Boot2Qt version 5.9 and later are supported.
|
||||||
To develop for earlier Boot to Qt versions, use \QC 4.8.
|
To develop for earlier Boot2Qt versions, use \QC 4.8.
|
||||||
|
|
||||||
\section2 Mobile Devices
|
\section2 Mobile Devices
|
||||||
|
|
||||||
@@ -99,8 +90,8 @@
|
|||||||
\li
|
\li
|
||||||
\row
|
\row
|
||||||
\li MCUs
|
\li MCUs
|
||||||
\li \image ok
|
\li
|
||||||
\li \image ok
|
\li
|
||||||
\li \image ok
|
\li \image ok
|
||||||
\row
|
\row
|
||||||
\li QNX
|
\li QNX
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2020 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -47,29 +47,20 @@
|
|||||||
devices:
|
devices:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
\li \l{Connecting Android Devices}{Android Device}
|
||||||
\li Android Device
|
\li \l{Connecting Bare Metal Devices}{Bare Metal Device}
|
||||||
|
\li \l{https://doc.qt.io/QtForDeviceCreation/b2qt-installation-guides.html}
|
||||||
\li Bare Metal Device
|
{Boot2Qt Device} (commercial only)
|
||||||
|
\li \l{Emulator}{Boot2Qt Emulator Device} (commercial only)
|
||||||
\li Boot2Qt Device (commercial only)
|
\li \l{Connecting Embedded Linux Devices}{Generic Remote Linux Device}
|
||||||
|
\li \l{Connecting iOS Devices}{iOS Device}
|
||||||
\li \l {Emulator}{Boot2Qt Emulator Device} (commercial only)
|
|
||||||
|
|
||||||
\li Generic Linux Device
|
|
||||||
|
|
||||||
\li iOS Device
|
|
||||||
|
|
||||||
\li iOS Simulator
|
\li iOS Simulator
|
||||||
|
\li \l{Connecting MCUs}{MCU Device} (commercial only)
|
||||||
\li QNX Device
|
\li \l{Connecting QNX Devices}{QNX Device}
|
||||||
|
\li \l{Building Applications for the Web}{WebAssembly Runtime}
|
||||||
\li Windows Phone
|
\li \l{Qt for UWP}{Windows Phone}
|
||||||
|
|
||||||
\li Windows Phone Emulator
|
\li Windows Phone Emulator
|
||||||
|
|
||||||
\li Windows Runtime (local)
|
\li Windows Runtime (local)
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\section1 Filtering Kit Settings
|
\section1 Filtering Kit Settings
|
||||||
|
@@ -37,7 +37,8 @@ function llvmConfig(hostOS, qtcFunctions)
|
|||||||
{
|
{
|
||||||
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
||||||
var llvmConfigVariants = [
|
var llvmConfigVariants = [
|
||||||
"llvm-config", "llvm-config-7", "llvm-config-8", "llvm-config-9"
|
// CLANG-UPGRADE-CHECK: Adapt once we require a new minimum version.
|
||||||
|
"llvm-config", "llvm-config-8", "llvm-config-9", "llvm-config-10", "llvm-config-11", "llvm-config-12"
|
||||||
];
|
];
|
||||||
|
|
||||||
// Prefer llvm-config* from LLVM_INSTALL_DIR
|
// Prefer llvm-config* from LLVM_INSTALL_DIR
|
||||||
|
@@ -39,7 +39,7 @@ try:
|
|||||||
# we do not need to hard fail in cases of partial python installation
|
# we do not need to hard fail in cases of partial python installation
|
||||||
# that will never use this.
|
# that will never use this.
|
||||||
import json
|
import json
|
||||||
except ModuleNotFoundError:
|
except:
|
||||||
print("Python module json not found. "
|
print("Python module json not found. "
|
||||||
"Native combined debugging might not work.")
|
"Native combined debugging might not work.")
|
||||||
pass
|
pass
|
||||||
|
@@ -448,7 +448,7 @@ void ClangToolRunWorker::finalize()
|
|||||||
{
|
{
|
||||||
const QString toolName = tool()->name();
|
const QString toolName = tool()->name();
|
||||||
if (m_filesNotAnalyzed.size() != 0) {
|
if (m_filesNotAnalyzed.size() != 0) {
|
||||||
appendMessage(tr("Error: Failed to analyze %1 files.").arg(m_filesAnalyzed.size()),
|
appendMessage(tr("Error: Failed to analyze %1 files.").arg(m_filesNotAnalyzed.size()),
|
||||||
ErrorMessageFormat);
|
ErrorMessageFormat);
|
||||||
Target *target = runControl()->target();
|
Target *target = runControl()->target();
|
||||||
if (target && target->activeBuildConfiguration() && !target->activeBuildConfiguration()->buildDirectory().exists()
|
if (target && target->activeBuildConfiguration() && !target->activeBuildConfiguration()->buildDirectory().exists()
|
||||||
|
@@ -201,7 +201,6 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
|
|||||||
kitInfo.cToolChain = toolchainFromFlags(kit,
|
kitInfo.cToolChain = toolchainFromFlags(kit,
|
||||||
originalFlags,
|
originalFlags,
|
||||||
ProjectExplorer::Constants::C_LANGUAGE_ID);
|
ProjectExplorer::Constants::C_LANGUAGE_ID);
|
||||||
ToolChainKitAspect::setToolChain(kit, kitInfo.cToolChain);
|
|
||||||
}
|
}
|
||||||
addDriverModeFlagIfNeeded(kitInfo.cToolChain, flags, originalFlags);
|
addDriverModeFlagIfNeeded(kitInfo.cToolChain, flags, originalFlags);
|
||||||
rpp.setFlagsForC({kitInfo.cToolChain, flags});
|
rpp.setFlagsForC({kitInfo.cToolChain, flags});
|
||||||
@@ -210,7 +209,6 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
|
|||||||
kitInfo.cxxToolChain = toolchainFromFlags(kit,
|
kitInfo.cxxToolChain = toolchainFromFlags(kit,
|
||||||
originalFlags,
|
originalFlags,
|
||||||
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
ToolChainKitAspect::setToolChain(kit, kitInfo.cxxToolChain);
|
|
||||||
}
|
}
|
||||||
addDriverModeFlagIfNeeded(kitInfo.cxxToolChain, flags, originalFlags);
|
addDriverModeFlagIfNeeded(kitInfo.cxxToolChain, flags, originalFlags);
|
||||||
rpp.setFlagsForCxx({kitInfo.cxxToolChain, flags});
|
rpp.setFlagsForCxx({kitInfo.cxxToolChain, flags});
|
||||||
|
@@ -102,7 +102,7 @@ QList<LocatorFilterEntry> FileSystemFilter::matchesFor(QFutureInterface<LocatorF
|
|||||||
const QStringList files = dirInfo.entryList(fileFilter,
|
const QStringList files = dirInfo.entryList(fileFilter,
|
||||||
QDir::Name|QDir::IgnoreCase|QDir::LocaleAware);
|
QDir::Name|QDir::IgnoreCase|QDir::LocaleAware);
|
||||||
|
|
||||||
const QRegularExpression regExp = createRegExp(entryFileName, caseSensitivity_);
|
QRegularExpression regExp = createRegExp(entryFileName, caseSensitivity_);
|
||||||
if (!regExp.isValid())
|
if (!regExp.isValid())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -122,7 +122,10 @@ QList<LocatorFilterEntry> FileSystemFilter::matchesFor(QFutureInterface<LocatorF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// file names can match with +linenumber or :linenumber
|
// file names can match with +linenumber or :linenumber
|
||||||
const EditorManager::FilePathInfo fp = EditorManager::splitLineAndColumnNumber(entry);
|
const EditorManager::FilePathInfo fp = EditorManager::splitLineAndColumnNumber(entryFileName);
|
||||||
|
regExp = createRegExp(fp.filePath, caseSensitivity_);
|
||||||
|
if (!regExp.isValid())
|
||||||
|
return {};
|
||||||
const QString fileName = QFileInfo(fp.filePath).fileName();
|
const QString fileName = QFileInfo(fp.filePath).fileName();
|
||||||
for (const QString &file : files) {
|
for (const QString &file : files) {
|
||||||
if (future.isCanceled())
|
if (future.isCanceled())
|
||||||
|
@@ -324,6 +324,7 @@ void CppFileSettingsWidget::apply()
|
|||||||
rc.sourceSuffix = m_ui.sourceSuffixComboBox->currentText();
|
rc.sourceSuffix = m_ui.sourceSuffixComboBox->currentText();
|
||||||
rc.headerSearchPaths = trimmedPaths(m_ui.headerSearchPathsEdit->text());
|
rc.headerSearchPaths = trimmedPaths(m_ui.headerSearchPathsEdit->text());
|
||||||
rc.sourceSearchPaths = trimmedPaths(m_ui.sourceSearchPathsEdit->text());
|
rc.sourceSearchPaths = trimmedPaths(m_ui.sourceSearchPathsEdit->text());
|
||||||
|
rc.licenseTemplatePath = licenseTemplatePath();
|
||||||
|
|
||||||
if (rc == *m_settings)
|
if (rc == *m_settings)
|
||||||
return;
|
return;
|
||||||
|
@@ -150,6 +150,11 @@ public:
|
|||||||
return fn;
|
return fn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString fullRef(bool includePrefix = false) const
|
||||||
|
{
|
||||||
|
return fullName(includePrefix).join('/');
|
||||||
|
}
|
||||||
|
|
||||||
void insert(const QStringList &path, BranchNode *n)
|
void insert(const QStringList &path, BranchNode *n)
|
||||||
{
|
{
|
||||||
BranchNode *current = this;
|
BranchNode *current = this;
|
||||||
@@ -186,7 +191,7 @@ public:
|
|||||||
}
|
}
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
return {fullName().join('/')};
|
return {fullRef()};
|
||||||
}
|
}
|
||||||
|
|
||||||
int rowOf(BranchNode *node)
|
int rowOf(BranchNode *node)
|
||||||
@@ -346,7 +351,7 @@ QVariant BranchModel::data(const QModelIndex &index, int role) const
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
case Qt::EditRole:
|
case Qt::EditRole:
|
||||||
return index.column() == 0 ? node->fullName().join('/') : QVariant();
|
return index.column() == 0 ? node->fullRef() : QVariant();
|
||||||
case Qt::ToolTipRole:
|
case Qt::ToolTipRole:
|
||||||
if (!node->isLeaf())
|
if (!node->isLeaf())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@@ -381,7 +386,7 @@ bool BranchModel::setData(const QModelIndex &index, const QVariant &value, int r
|
|||||||
if (newName.isEmpty())
|
if (newName.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const QString oldName = node->fullName().join('/');
|
const QString oldName = node->fullRef();
|
||||||
if (oldName == newName)
|
if (oldName == newName)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -525,7 +530,7 @@ QString BranchModel::fullName(const QModelIndex &idx, bool includePrefix) const
|
|||||||
return QString();
|
return QString();
|
||||||
if (node == d->headNode)
|
if (node == d->headNode)
|
||||||
return QString("HEAD");
|
return QString("HEAD");
|
||||||
return node->fullName(includePrefix).join('/');
|
return node->fullRef(includePrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList BranchModel::localBranchNames() const
|
QStringList BranchModel::localBranchNames() const
|
||||||
@@ -901,7 +906,8 @@ void BranchModel::updateUpstreamStatus(BranchNode *node)
|
|||||||
{
|
{
|
||||||
if (node->tracking.isEmpty())
|
if (node->tracking.isEmpty())
|
||||||
return;
|
return;
|
||||||
VcsCommand *command = d->client->asyncUpstreamStatus(d->workingDirectory, node->name, node->tracking);
|
VcsCommand *command = d->client->asyncUpstreamStatus(
|
||||||
|
d->workingDirectory, node->fullRef(), node->tracking);
|
||||||
QObject::connect(command, &VcsCommand::stdOutText, node, [this, node](const QString &text) {
|
QObject::connect(command, &VcsCommand::stdOutText, node, [this, node](const QString &text) {
|
||||||
const QStringList split = text.trimmed().split('\t');
|
const QStringList split = text.trimmed().split('\t');
|
||||||
QTC_ASSERT(split.size() == 2, return);
|
QTC_ASSERT(split.size() == 2, return);
|
||||||
|
@@ -134,21 +134,22 @@ LocalQmlPreviewSupport::LocalQmlPreviewSupport(ProjectExplorer::RunControl *runC
|
|||||||
const auto currentTarget = runControl->target();
|
const auto currentTarget = runControl->target();
|
||||||
const auto *qmlBuildSystem = qobject_cast<QmlProjectManager::QmlBuildSystem *>(currentTarget->buildSystem());
|
const auto *qmlBuildSystem = qobject_cast<QmlProjectManager::QmlBuildSystem *>(currentTarget->buildSystem());
|
||||||
|
|
||||||
const auto aspect = runControl->aspect<QmlProjectManager::QmlMainFileAspect>();
|
if (const auto aspect = runControl->aspect<QmlProjectManager::QmlMainFileAspect>()) {
|
||||||
const QString mainScript = aspect->mainScript();
|
const QString mainScript = aspect->mainScript();
|
||||||
const QString currentFile = aspect->currentFile();
|
const QString currentFile = aspect->currentFile();
|
||||||
|
|
||||||
const QString mainScriptFromProject = qmlBuildSystem->targetFile(
|
const QString mainScriptFromProject = qmlBuildSystem->targetFile(
|
||||||
Utils::FilePath::fromString(mainScript)).toString();
|
Utils::FilePath::fromString(mainScript)).toString();
|
||||||
|
|
||||||
const QString currentFileFromProject = qmlBuildSystem->targetFile(
|
const QString currentFileFromProject = qmlBuildSystem->targetFile(
|
||||||
Utils::FilePath::fromString(currentFile)).toString();
|
Utils::FilePath::fromString(currentFile)).toString();
|
||||||
|
|
||||||
if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) {
|
if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) {
|
||||||
qmlProjectRunConfigurationArguments.removeLast();
|
qmlProjectRunConfigurationArguments.removeLast();
|
||||||
auto commandLine = Utils::CommandLine(runnable.commandLine().executable(), qmlProjectRunConfigurationArguments);
|
auto commandLine = Utils::CommandLine(runnable.commandLine().executable(), qmlProjectRunConfigurationArguments);
|
||||||
commandLine.addArg(currentFile);
|
commandLine.addArg(currentFile);
|
||||||
runnable.setCommandLine(commandLine);
|
runnable.setCommandLine(commandLine);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::QtcProcess::addArg(&runnable.commandLineArguments,
|
Utils::QtcProcess::addArg(&runnable.commandLineArguments,
|
||||||
|
@@ -51,6 +51,7 @@ static CommandLine emrunCommand(Target *target, const QString &browser, const QS
|
|||||||
"--browser", browser,
|
"--browser", browser,
|
||||||
"--port", port,
|
"--port", port,
|
||||||
"--no_emrun_detect",
|
"--no_emrun_detect",
|
||||||
|
"--serve_after_close",
|
||||||
html.toString()
|
html.toString()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user