forked from qt-creator/qt-creator
Qbs: set cpp.platformPath for OS X and iOS profiles.
This is an (effectively) required property which is necessary to locate a number of SDK tools. Change-Id: Ia4912e383a053c7abcbd47715cf4b130c4fbafd6 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
This commit is contained in:
@@ -46,6 +46,7 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
namespace QbsProjectManager {
|
namespace QbsProjectManager {
|
||||||
using namespace Constants;
|
using namespace Constants;
|
||||||
@@ -188,10 +189,18 @@ QVariantMap DefaultPropertyProvider::properties(const ProjectExplorer::Kit *k, c
|
|||||||
if (targetAbi.os() == ProjectExplorer::Abi::MacOS) {
|
if (targetAbi.os() == ProjectExplorer::Abi::MacOS) {
|
||||||
// Set Xcode SDK name and version - required by Qbs if a sysroot is present
|
// Set Xcode SDK name and version - required by Qbs if a sysroot is present
|
||||||
// Ideally this would be done in a better way...
|
// Ideally this would be done in a better way...
|
||||||
QRegExp re(QLatin1String("(MacOSX|iPhoneOS|iPhoneSimulator)([0-9]+\\.[0-9]+)\\.sdk"));
|
const QRegExp sdkNameRe(QLatin1String("(macosx|iphoneos|iphonesimulator)([0-9]+\\.[0-9]+)"));
|
||||||
if (re.exactMatch(QDir(sysroot).dirName())) {
|
const QRegExp sdkVersionRe(QLatin1String("([0-9]+\\.[0-9]+)"));
|
||||||
data.insert(QLatin1String(CPP_XCODESDKNAME), QString(re.cap(1).toLower() + re.cap(2)));
|
QDir sysrootdir(sysroot);
|
||||||
data.insert(QLatin1String(CPP_XCODESDKVERSION), re.cap(2));
|
const QSettings sdkSettings(sysrootdir.absoluteFilePath(QLatin1String("SDKSettings.plist")), QSettings::NativeFormat);
|
||||||
|
const QString sdkName(sdkSettings.value(QLatin1String("CanonicalName")).toString());
|
||||||
|
const QString sdkVersion(sdkSettings.value(QLatin1String("Version")).toString());
|
||||||
|
if (sdkNameRe.exactMatch(sdkName) && sdkVersionRe.exactMatch(sdkVersion)) {
|
||||||
|
for (int i = 3; i > 0; --i)
|
||||||
|
sysrootdir.cdUp();
|
||||||
|
data.insert(QLatin1String(CPP_PLATFORMPATH), sysrootdir.absolutePath());
|
||||||
|
data.insert(QLatin1String(CPP_XCODESDKNAME), sdkName);
|
||||||
|
data.insert(QLatin1String(CPP_XCODESDKVERSION), sdkVersion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ const char CPP_COMPILERNAME[] = "cpp.compilerName";
|
|||||||
const char CPP_LINKERNAME[] = "cpp.linkerName";
|
const char CPP_LINKERNAME[] = "cpp.linkerName";
|
||||||
const char CPP_PLATFORMCFLAGS[] = "cpp.platformCFlags";
|
const char CPP_PLATFORMCFLAGS[] = "cpp.platformCFlags";
|
||||||
const char CPP_PLATFORMCXXFLAGS[] = "cpp.platformCxxFlags";
|
const char CPP_PLATFORMCXXFLAGS[] = "cpp.platformCxxFlags";
|
||||||
|
const char CPP_PLATFORMPATH[] = "cpp.platformPath";
|
||||||
const char CPP_XCODESDKNAME[] = "cpp.xcodeSdkName";
|
const char CPP_XCODESDKNAME[] = "cpp.xcodeSdkName";
|
||||||
const char CPP_XCODESDKVERSION[] = "cpp.xcodeSdkVersion";
|
const char CPP_XCODESDKVERSION[] = "cpp.xcodeSdkVersion";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user