Merge remote-tracking branch 'origin/4.2'

Change-Id: Ib3073a0a3d80c99cf97b9839480dbf9583fa10de
This commit is contained in:
Eike Ziller
2017-01-23 13:13:05 +01:00
14 changed files with 208 additions and 31 deletions

View File

@@ -24,6 +24,7 @@ All Projects
* Fixed issue with upgrading tool chain settings in auto-detected kits * Fixed issue with upgrading tool chain settings in auto-detected kits
* Fixed crash when setting custom executable (QTCREATORBUG-17505) * Fixed crash when setting custom executable (QTCREATORBUG-17505)
* Fixed MSVC support on Windows Vista and earlier (QTCREATORBUG-17501)
QMake Projects QMake Projects
@@ -32,6 +33,7 @@ QMake Projects
(QTCREATORBUG-17462, QTCREATORBUG-17477) (QTCREATORBUG-17462, QTCREATORBUG-17477)
* Fixed that `OTHER_FILES` and `DISTFILES` in subdirs projects were no longer * Fixed that `OTHER_FILES` and `DISTFILES` in subdirs projects were no longer
shown in project tree (QTCREATORBUG-17473) shown in project tree (QTCREATORBUG-17473)
* Fixed crash caused by unnormalized file paths (QTCREATORBUG-17364)
Qbs Projects Qbs Projects

View File

@@ -152,6 +152,7 @@ public:
QString toString(bool multiline = false, int indent = 0) const; QString toString(bool multiline = false, int indent = 0) const;
qulonglong toAddress() const; qulonglong toAddress() const;
int toInt() const { return m_data.toInt(); } int toInt() const { return m_data.toInt(); }
qint64 toLongLong() const { return m_data.toLongLong(); }
void fromString(const QString &str); void fromString(const QString &str);
void fromStringMultiple(const QString &str); void fromStringMultiple(const QString &str);

View File

@@ -489,6 +489,8 @@ void LldbEngine::handleResponse(const QString &response)
handleLocationNotification(item); handleLocationNotification(item);
else if (name == "output") else if (name == "output")
handleOutputNotification(item); handleOutputNotification(item);
else if (name == "pid")
notifyInferiorPid(item.toLongLong());
} }
} }

View File

@@ -276,6 +276,7 @@ Target *Project::createTarget(Kit *k)
bool Project::copySteps(Target *sourceTarget, Target *newTarget) bool Project::copySteps(Target *sourceTarget, Target *newTarget)
{ {
QTC_ASSERT(newTarget, return false);
bool fatalError = false; bool fatalError = false;
QStringList buildconfigurationError; QStringList buildconfigurationError;
QStringList deployconfigurationError; QStringList deployconfigurationError;

View File

@@ -443,7 +443,7 @@ public:
}); });
QMenu *copyMenu = menu->addMenu(tr("Copy Steps From Other Kit...")); QMenu *copyMenu = menu->addMenu(tr("Copy Steps From Other Kit..."));
if (m_kitId.isValid()) { if (m_kitId.isValid() && m_project->target(m_kitId)) {
const QList<Kit *> kits = KitManager::kits(); const QList<Kit *> kits = KitManager::kits();
for (Kit *kit : kits) { for (Kit *kit : kits) {
QAction *copyAction = copyMenu->addAction(kit->displayName()); QAction *copyAction = copyMenu->addAction(kit->displayName());

View File

@@ -936,6 +936,7 @@ void QbsProject::updateCppCodeModel()
QLatin1String(CONFIG_INCLUDEPATHS)); QLatin1String(CONFIG_INCLUDEPATHS));
list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE), list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE),
QLatin1String(CONFIG_SYSTEM_INCLUDEPATHS))); QLatin1String(CONFIG_SYSTEM_INCLUDEPATHS)));
list.removeDuplicates();
CppTools::ProjectPartHeaderPaths grpHeaderPaths; CppTools::ProjectPartHeaderPaths grpHeaderPaths;
foreach (const QString &p, list) foreach (const QString &p, list)
grpHeaderPaths += CppTools::ProjectPartHeaderPath( grpHeaderPaths += CppTools::ProjectPartHeaderPath(
@@ -946,6 +947,7 @@ void QbsProject::updateCppCodeModel()
QLatin1String(CONFIG_FRAMEWORKPATHS)); QLatin1String(CONFIG_FRAMEWORKPATHS));
list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE), list.append(props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE),
QLatin1String(CONFIG_SYSTEM_FRAMEWORKPATHS))); QLatin1String(CONFIG_SYSTEM_FRAMEWORKPATHS)));
list.removeDuplicates();
foreach (const QString &p, list) foreach (const QString &p, list)
grpHeaderPaths += CppTools::ProjectPartHeaderPath( grpHeaderPaths += CppTools::ProjectPartHeaderPath(
FileName::fromUserInput(p).toString(), FileName::fromUserInput(p).toString(),

View File

@@ -1740,7 +1740,7 @@ static QByteArray scanQtBinaryForBuildString(const FileName &library)
const size_t oneMiB = 1024 * 1024; const size_t oneMiB = 1024 * 1024;
const size_t keepSpace = 4096; const size_t keepSpace = 4096;
const size_t bufferSize = oneMiB + keepSpace; const size_t bufferSize = oneMiB + keepSpace;
QByteArray buffer(bufferSize, '\0'); QByteArray buffer(bufferSize, Qt::Uninitialized);
char *const readStart = buffer.data() + keepSpace; char *const readStart = buffer.data() + keepSpace;
auto readStartIt = buffer.begin() + keepSpace; auto readStartIt = buffer.begin() + keepSpace;
@@ -1788,39 +1788,72 @@ static QByteArray scanQtBinaryForBuildString(const FileName &library)
return buildString; return buildString;
} }
static Abi refineAbiFromBuildString(const QByteArray &buildString, const Abi &probableAbi) static QStringList extractFieldsFromBuildString(const QByteArray &buildString)
{ {
if (buildString.isEmpty() if (buildString.isEmpty()
|| buildString.count() > 4096) || buildString.count() > 4096)
return Abi(); return QStringList();
const QRegularExpression buildStringMatcher("^Qt " const QRegularExpression buildStringMatcher("^Qt "
"([\\d\\.a-zA-Z]*) " // Qt version "([\\d\\.a-zA-Z]*) " // Qt version
"\\(" "\\("
"([a-z\\d_]*)-" // CPU "([\\w_-]+) " // Abi information
"(big|little)_endian-"
"([a-z]+(?:32|64))" // pointer information
"(?:-(qreal|))?" // extra information like -qreal
"(?:-([^-]+))? " // ABI information
"(shared|static) (?:\\(dynamic\\) )?" "(shared|static) (?:\\(dynamic\\) )?"
"(debug|release)" "(debug|release)"
" build; by " " build; by "
"(.*)" // compiler with extra info "(.*)" // compiler with extra info
"\\)$"); "\\)$");
QTC_ASSERT(buildStringMatcher.isValid(), qWarning() << buildStringMatcher.errorString()); QTC_ASSERT(buildStringMatcher.isValid(), qWarning() << buildStringMatcher.errorString());
const QRegularExpressionMatch match = buildStringMatcher.match(QString::fromUtf8(buildString));
QTC_ASSERT(match.hasMatch(), return Abi());
// const QString qtVersion = match.captured(1); const QRegularExpressionMatch match = buildStringMatcher.match(QString::fromUtf8(buildString));
// const QString cpu = match.captured(2); if (!match.hasMatch())
// const bool littleEndian = (match.captured(3) == "little"); return QStringList();
// const QString pointer = match.captured(4);
// const QString extra = match.captured(5); QStringList result;
// const QString abiString = match.captured(6); result.append(match.captured(1)); // qtVersion
// const QString linkage = match.captured(7);
// const QString buildType = match.captured(8); // Abi info string:
const QString compiler = match.captured(9); QStringList abiInfo = match.captured(2).split('-', QString::SkipEmptyParts);
result.append(abiInfo.takeFirst()); // cpu
const QString endian = abiInfo.takeFirst();
QTC_ASSERT(endian.endsWith("_endian"), return QStringList());
result.append(endian.left(endian.count() - 7)); // without the "_endian"
result.append(abiInfo.takeFirst()); // pointer
if (abiInfo.isEmpty()) {
// no extra info whatsoever:
result.append(""); // qreal is unset
result.append(""); // extra info is unset
} else {
const QString next = abiInfo.at(0);
if (next.startsWith("qreal_")) {
abiInfo.takeFirst();
result.append(next.mid(6)); // qreal: without the "qreal_" part;
} else {
result.append(""); // qreal is unset!
}
result.append(abiInfo.join('-')); // extra abi strings
}
result.append(match.captured(3)); // linkage
result.append(match.captured(4)); // buildType
result.append(match.captured(5)); // compiler
return result;
}
static Abi refineAbiFromBuildString(const QByteArray &buildString, const Abi &probableAbi)
{
QStringList buildStringData = extractFieldsFromBuildString(buildString);
if (buildStringData.count() != 9)
return probableAbi;
const QString compiler = buildStringData.at(8);
Abi::Architecture arch = probableAbi.architecture(); Abi::Architecture arch = probableAbi.architecture();
Abi::OS os = probableAbi.os(); Abi::OS os = probableAbi.os();
@@ -1873,3 +1906,57 @@ QList<Abi> BaseQtVersion::qtAbisFromLibrary(const FileNameList &coreLibraries)
} }
return res; return res;
} }
#if defined(WITH_TESTS)
#include <QTest>
#include "qtsupportplugin.h"
void QtSupportPlugin::testQtBuildStringParsing_data()
{
QTest::addColumn<QByteArray>("buildString");
QTest::addColumn<QString>("expected");
QTest::newRow("invalid build string")
<< QByteArray("Qt with invalid buildstring") << QString();
QTest::newRow("empty build string")
<< QByteArray("") << QString();
QTest::newRow("huge build string")
<< QByteArray(8192, 'x') << QString();
QTest::newRow("valid build string")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;;;shared;release;GCC 6.2.1 20160830";
QTest::newRow("with qreal")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16 shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;__fp16;;shared;release;GCC 6.2.1 20160830";
QTest::newRow("with qreal and abi")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16-eabi shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;__fp16;eabi;shared;release;GCC 6.2.1 20160830";
QTest::newRow("with qreal, eabi and softfloat")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-qreal___fp16-eabi-softfloat shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;__fp16;eabi-softfloat;shared;release;GCC 6.2.1 20160830";
QTest::newRow("with eabi")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-eabi shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;;eabi;shared;release;GCC 6.2.1 20160830";
QTest::newRow("with eabi and softfloat")
<< QByteArray("Qt 5.7.1 (x86_64-little_endian-lp64-eabi-softfloat shared (dynamic) release build; by GCC 6.2.1 20160830)")
<< "5.7.1;x86_64;little;lp64;;eabi-softfloat;shared;release;GCC 6.2.1 20160830";
}
void QtSupportPlugin::testQtBuildStringParsing()
{
QFETCH(QByteArray, buildString);
QFETCH(QString, expected);
QStringList expectedList;
if (!expected.isEmpty())
expectedList = expected.split(';');
QStringList actual = extractFieldsFromBuildString(buildString);
QCOMPARE(expectedList, actual);
}
#endif // WITH_TESTS

View File

@@ -53,6 +53,10 @@ private slots:
void testQtProjectImporter_oneProject_data(); void testQtProjectImporter_oneProject_data();
void testQtProjectImporter_oneProject(); void testQtProjectImporter_oneProject();
void testQtBuildStringParsing_data();
void testQtBuildStringParsing();
#if 0 #if 0
void testQtProjectImporter_oneProjectExistingKit(); void testQtProjectImporter_oneProjectExistingKit();
void testQtProjectImporter_oneProjectNewKitExistingQt(); void testQtProjectImporter_oneProjectNewKitExistingQt();

View File

@@ -83,7 +83,7 @@ QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::fixifiedValues(
foreach (const ProString &str, d->values(ProKey(variable))) { foreach (const ProString &str, d->values(ProKey(variable))) {
const QString &el = d->m_option->expandEnvVars(str.toQString()); const QString &el = d->m_option->expandEnvVars(str.toQString());
if (IoUtils::isAbsolutePath(el)) { if (IoUtils::isAbsolutePath(el)) {
result << SourceFile{ el, str.sourceFile() }; result << SourceFile{ QDir::cleanPath(el), str.sourceFile() };
} else { } else {
QString fn = QDir::cleanPath(baseDirectory + QLatin1Char('/') + el); QString fn = QDir::cleanPath(baseDirectory + QLatin1Char('/') + el);
if (IoUtils::exists(fn)) if (IoUtils::exists(fn))
@@ -132,16 +132,17 @@ QVector<ProFileEvaluator::SourceFile> ProFileEvaluator::absoluteFileValues(
const QString &el = d->m_option->expandEnvVars(str.toQString()); const QString &el = d->m_option->expandEnvVars(str.toQString());
QString absEl; QString absEl;
if (IoUtils::isAbsolutePath(el)) { if (IoUtils::isAbsolutePath(el)) {
if (m_vfs->exists(el, flags)) { QString fn = QDir::cleanPath(el);
result << SourceFile{ el, str.sourceFile() }; if (m_vfs->exists(fn, flags)) {
result << SourceFile{ fn, str.sourceFile() };
goto next; goto next;
} }
absEl = el; absEl = fn;
} else { } else {
foreach (const QString &dir, searchDirs) { foreach (const QString &dir, searchDirs) {
QString fn = QDir::cleanPath(dir + QLatin1Char('/') + el); QString fn = QDir::cleanPath(dir + QLatin1Char('/') + el);
if (m_vfs->exists(fn, flags)) { if (m_vfs->exists(fn, flags)) {
result << SourceFile{ QDir::cleanPath(fn), str.sourceFile() }; result << SourceFile{ fn, str.sourceFile() };
goto next; goto next;
} }
} }

View File

@@ -13,6 +13,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value> <value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value> <value type="int" key="QtSupport.QtInformation">4</value>
</valuemap> </valuemap>
@@ -97,6 +101,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value> <value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value> <value type="int" key="QtSupport.QtInformation">4</value>
</valuemap> </valuemap>
@@ -119,6 +127,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value> <value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">9</value> <value type="int" key="QtSupport.QtInformation">9</value>
</valuemap> </valuemap>
@@ -141,6 +153,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value> <value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">2</value> <value type="int" key="QtSupport.QtInformation">2</value>
</valuemap> </valuemap>
@@ -163,6 +179,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value> <value type="QByteArray" key="PE.Profile.DeviceType">Desktop</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">11</value> <value type="int" key="QtSupport.QtInformation">11</value>
</valuemap> </valuemap>

View File

@@ -15,6 +15,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value> <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC</value> <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value> <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
@@ -28,6 +29,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value> <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Fremantle</value> <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Fremantle</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{32ee0a53-87d9-4f17-b8a5-a7642101e803}</value> <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{32ee0a53-87d9-4f17-b8a5-a7642101e803}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
@@ -41,6 +43,7 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value> <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Harmattan</value> <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC for Harmattan</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{9be34a3b-acf0-4570-be0d-34cd224d8efe}</value> <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{9be34a3b-acf0-4570-be0d-34cd224d8efe}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
@@ -55,11 +58,43 @@
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value> <value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Clang (x86 64bit)</value> <value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Clang (x86 64bit)</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value> <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Clang:{6afe7dea-8caa-424e-b370-b7b0a34015fb}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">2</value>
</valuemap>
</data>
<data>
<variable>ToolChain.4</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/clang</value>
<valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
<value type="QString">x86-macos-generic-mach_o-64bit</value>
<value type="QString">x86-macos-generic-mach_o-32bit</value>
</valuelist>
<value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">Clang [C]</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Clang:{0db093b8-890b-4fad-a4bc-9078124fe866}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
</valuemap>
</data>
<data>
<variable>ToolChain.5</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/gcc</value>
<valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
<value type="QString">x86-linux-generic-elf-64bit</value>
<value type="QString">x86-linux-generic-elf-32bit</value>
<value type="QString">x86-macos-generic-mach_o-64bit</value>
</valuelist>
<value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC [C]</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{461bb8dc-22ff-461f-82fe-ebe8b21b697f}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
<variable>ToolChain.Count</variable> <variable>ToolChain.Count</variable>
<value type="int">4</value> <value type="int">6</value>
</data> </data>
<data> <data>
<variable>Version</variable> <variable>Version</variable>

View File

@@ -97,6 +97,10 @@
<value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value> <value type="QByteArray" key="PE.Profile.DeviceType">GenericLinuxOsType</value>
<value type="QString" key="PE.Profile.SysRoot"></value> <value type="QString" key="PE.Profile.SysRoot"></value>
<value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value> <value type="QString" key="PE.Profile.ToolChain">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
<valuemap type="QVariantMap" key="PE.Profile.ToolChains">
<value type="QByteArray" key="C">{7bfd4fd4-e64a-417f-b10f-20602e1719d1}</value>
<value type="QString" key="Cxx">ProjectExplorer.ToolChain.Gcc:{c3f59b87-6997-4bd8-8067-ee04dc536371}</value>
</valuemap>
<value type="QString" key="QtPM4.mkSpecInformation"></value> <value type="QString" key="QtPM4.mkSpecInformation"></value>
<value type="int" key="QtSupport.QtInformation">4</value> <value type="int" key="QtSupport.QtInformation">4</value>
</valuemap> </valuemap>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorToolChains> <!DOCTYPE QtCreatorToolChains>
<!-- Written by Qt Creator 2.5.83, 2012-09-21T19:00:03. --> <!-- Written by QtCreator 4.2.1, 2017-01-06T12:39:15. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>ToolChain.0</variable> <variable>ToolChain.0</variable>
@@ -43,9 +43,27 @@
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{9be34a3b-acf0-4570-be0d-34cd224d8efe}</value> <value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{9be34a3b-acf0-4570-be0d-34cd224d8efe}</value>
</valuemap> </valuemap>
</data> </data>
<data>
<variable>ToolChain.3</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.GccToolChain.OriginalTargetTriple">x86_64-linux-gnu</value>
<value type="QString" key="ProjectExplorer.GccToolChain.Path">/usr/bin/gcc</value>
<valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.PlatformCodeGenFlags"/>
<valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.PlatformLinkerFlags"/>
<valuelist type="QVariantList" key="ProjectExplorer.GccToolChain.SupportedAbis">
<value type="QString">x86-linux-generic-elf-64bit</value>
<value type="QString">x86-linux-generic-elf-32bit</value>
</valuelist>
<value type="QString" key="ProjectExplorer.GccToolChain.TargetAbi">SET_BY_SQUISH</value>
<value type="bool" key="ProjectExplorer.ToolChain.Autodetect">false</value>
<value type="QString" key="ProjectExplorer.ToolChain.DisplayName">GCC</value>
<value type="QString" key="ProjectExplorer.ToolChain.Id">ProjectExplorer.ToolChain.Gcc:{7bfd4fd4-e64a-417f-b10f-20602e1719d1}</value>
<value type="int" key="ProjectExplorer.ToolChain.Language">1</value>
</valuemap>
</data>
<data> <data>
<variable>ToolChain.Count</variable> <variable>ToolChain.Count</variable>
<value type="int">3</value> <value type="int">4</value>
</data> </data>
<data> <data>
<variable>Version</variable> <variable>Version</variable>