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 <QFileInfo>
|
||||
#include <QSettings>
|
||||
|
||||
namespace QbsProjectManager {
|
||||
using namespace Constants;
|
||||
@@ -188,10 +189,18 @@ QVariantMap DefaultPropertyProvider::properties(const ProjectExplorer::Kit *k, c
|
||||
if (targetAbi.os() == ProjectExplorer::Abi::MacOS) {
|
||||
// Set Xcode SDK name and version - required by Qbs if a sysroot is present
|
||||
// Ideally this would be done in a better way...
|
||||
QRegExp re(QLatin1String("(MacOSX|iPhoneOS|iPhoneSimulator)([0-9]+\\.[0-9]+)\\.sdk"));
|
||||
if (re.exactMatch(QDir(sysroot).dirName())) {
|
||||
data.insert(QLatin1String(CPP_XCODESDKNAME), QString(re.cap(1).toLower() + re.cap(2)));
|
||||
data.insert(QLatin1String(CPP_XCODESDKVERSION), re.cap(2));
|
||||
const QRegExp sdkNameRe(QLatin1String("(macosx|iphoneos|iphonesimulator)([0-9]+\\.[0-9]+)"));
|
||||
const QRegExp sdkVersionRe(QLatin1String("([0-9]+\\.[0-9]+)"));
|
||||
QDir sysrootdir(sysroot);
|
||||
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_PLATFORMCFLAGS[] = "cpp.platformCFlags";
|
||||
const char CPP_PLATFORMCXXFLAGS[] = "cpp.platformCxxFlags";
|
||||
const char CPP_PLATFORMPATH[] = "cpp.platformPath";
|
||||
const char CPP_XCODESDKNAME[] = "cpp.xcodeSdkName";
|
||||
const char CPP_XCODESDKVERSION[] = "cpp.xcodeSdkVersion";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user