aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/qbs-setup-toolchains/msvcprobe.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-03-03 17:02:11 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-04-08 13:56:26 +0200
commit9c42cb3e891da2fdb915430ecad13120e01eb4ed (patch)
tree68770756a98dc056a30806e8cd557b3c05cf0444 /src/app/qbs-setup-toolchains/msvcprobe.cpp
parentd17ca97abe00313447a60252c5d403f821e75f72 (diff)
detect Visual Studio build environment using vcvarsall.bat
To provide a consistent build environment for Visual Studio setup-toolchains now executes the vsvarsall.bat that comes with the Visual Studio installation. The environment is written to the profile under the key "buildEnvironment". The setupBuildEnvironment script in windows-msvc.qbs isn't needed anymore. Task-number: QBS-444 Task-number: QBS-508 Change-Id: I3191f5ff127bed6b96ce5ea5520b20fc9646364f Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/app/qbs-setup-toolchains/msvcprobe.cpp')
-rw-r--r--src/app/qbs-setup-toolchains/msvcprobe.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/app/qbs-setup-toolchains/msvcprobe.cpp b/src/app/qbs-setup-toolchains/msvcprobe.cpp
index 5a0ba4072..b4e07eb4d 100644
--- a/src/app/qbs-setup-toolchains/msvcprobe.cpp
+++ b/src/app/qbs-setup-toolchains/msvcprobe.cpp
@@ -31,6 +31,7 @@
#include "msvcinfo.h"
#include "probe.h"
+#include "vsenvironmentdetector.h"
#include "../shared/logging/consolelogger.h"
#include <logging/translator.h>
@@ -52,9 +53,14 @@ Q_DECLARE_TYPEINFO(WinSDK, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(MSVC, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
+static void writeEnvironment(Profile &p, const QProcessEnvironment &env)
+{
+ foreach (const QString &name, env.keys())
+ p.setValue(QLatin1String("buildEnvironment.") + name, env.value(name));
+}
+
static void addMSVCPlatform(const MSVC &msvc, Settings *settings, QList<Profile> &profiles,
- QString name, const QString &installPath, const QString &winSDKPath,
- const QString &architecture)
+ QString name, const QString &installPath, const QString &architecture)
{
name.append(QLatin1Char('_') + architecture);
qbsInfo() << Tr::tr("Setting up profile '%1'.").arg(name);
@@ -63,7 +69,6 @@ static void addMSVCPlatform(const MSVC &msvc, Settings *settings, QList<Profile>
p.setValue(QLatin1String("qbs.targetOS"), QStringList(QLatin1String("windows")));
p.setValue(QLatin1String("cpp.toolchainInstallPath"), installPath);
p.setValue(QLatin1String("qbs.toolchain"), QStringList(QLatin1String("msvc")));
- p.setValue(QLatin1String("cpp.windowsSDKPath"), winSDKPath);
p.setValue(QLatin1String("qbs.architecture"),
Internal::HostOsInfo::canonicalArchitecture(architecture));
p.setValue(QLatin1String("qbs.endianness"),
@@ -73,6 +78,7 @@ static void addMSVCPlatform(const MSVC &msvc, Settings *settings, QList<Profile>
p.setValue(QLatin1String("cpp.platformCFlags"), flags);
p.setValue(QLatin1String("cpp.platformCxxFlags"), flags);
}
+ writeEnvironment(p, msvc.environments.value(architecture));
profiles << p;
}
@@ -179,6 +185,14 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
if (!QFileInfo(vcvars32bat).isFile())
continue;
+ VsEnvironmentDetector envdetector(&msvc);
+ if (!envdetector.start()) {
+ qbsError() << " "
+ << Tr::tr("Detecting the build environment from '%1' failed.").arg(
+ vcvars32bat);
+ continue;
+ }
+
msvcs += msvc;
}
@@ -197,14 +211,14 @@ void msvcProbe(Settings *settings, QList<Profile> &profiles)
foreach (const WinSDK &sdk, winSDKs) {
foreach (const QString &arch, sdk.architectures) {
addMSVCPlatform(sdk, settings, profiles, QLatin1String("WinSDK") + sdk.version,
- sdk.installPath + QLatin1String("\\bin"), defaultWinSDK.installPath, arch);
+ sdk.installPath + QLatin1String("\\bin"), arch);
}
}
foreach (const MSVC &msvc, msvcs) {
foreach (const QString &arch, msvc.architectures) {
addMSVCPlatform(msvc, settings, profiles, QLatin1String("MSVC") + msvc.version,
- msvc.installPath, defaultWinSDK.installPath, arch);
+ msvc.installPath, arch);
}
}
}