diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index 15400eab85a..0bf126ed3a1 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -67,7 +67,10 @@ Abi AbstractMsvcToolChain::targetAbi() const bool AbstractMsvcToolChain::isValid() const { - return !m_vcvarsBat.isEmpty(); + if (m_vcvarsBat.isEmpty()) + return false; + QFileInfo fi(m_vcvarsBat); + return fi.isFile() && fi.isExecutable(); } QByteArray AbstractMsvcToolChain::predefinedMacros(const QStringList &cxxflags) const diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 696502117f3..310d4f5cce3 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -356,14 +356,6 @@ MsvcToolChain::MsvcToolChain(Core::Id typeId, const QString &name, const Abi &ab setDisplayName(name); } -bool MsvcToolChain::isValid() const -{ - if (!AbstractMsvcToolChain::isValid()) - return false; - QString vcVarsBat = MsvcToolChainFactory::vcVarsBatFor(QFileInfo(m_vcvarsBat).absolutePath(), m_varsBatArg); - return QFileInfo::exists(vcVarsBat); -} - MsvcToolChain::MsvcToolChain(Core::Id typeId) : AbstractMsvcToolChain(typeId, ManualDetection) { } @@ -610,8 +602,10 @@ bool MsvcToolChainFactory::checkForVisualStudioInstallation(const QString &vsNam return vsRegistry.contains(vsName); } -QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, const QString &toolchainName) +QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform) { + const QString toolchainName = platformName(platform); + if (toolchainName.startsWith(QLatin1Char('/'))) // windows sdk case, all use SetEnv.cmd return basePath + QLatin1String("/SetEnv.cmd"); if (toolchainName == QLatin1String("x86")) @@ -636,11 +630,6 @@ QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, const QStrin return QString(); } -QString MsvcToolChainFactory::vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform) -{ - return vcVarsBatFor(basePath, platformName(platform)); -} - static ToolChain *findOrCreateToolChain(const QList &alreadyKnown, const QString &name, const Abi &abi, const QString &varsBat, const QString &varsBatArg, @@ -816,13 +805,13 @@ QList MsvcToolChainFactory::autoDetect(const QList &al << MsvcToolChain::arm << MsvcToolChain::x86_arm << MsvcToolChain::amd64_arm << MsvcToolChain::ia64 << MsvcToolChain::x86_ia64; foreach (const MsvcToolChain::Platform &platform, platforms) { - if (hostSupportsPlatform(platform) - && QFileInfo(vcVarsBatFor(path, platform)).isFile()) { + QString vcvarsBat = vcVarsBatFor(path, platform); + if (hostSupportsPlatform(platform) && QFileInfo(vcvarsBat).isFile()) { results.append(findOrCreateToolChain( alreadyKnown, generateDisplayName(vsName, MsvcToolChain::VS, platform), findAbiOfMsvc(MsvcToolChain::VS, platform, vsName), - vcvarsAllbat, platformName(platform), + vcvarsBat, platformName(platform), ToolChain::AutoDetection)); } } diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 12cc614a8f3..d544cebf743 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -58,7 +58,6 @@ class MsvcToolChain : public AbstractMsvcToolChain Detection d = ManualDetection); MsvcToolChain(); - bool isValid() const override; Utils::FileNameList suggestedMkspecList() const override; QString typeDisplayName() const override; @@ -132,7 +131,6 @@ class MsvcToolChainFactory : public ToolChainFactory ToolChain *restore(const QVariantMap &data) override; ToolChainConfigWidget *configurationWidget(ToolChain *); - static QString vcVarsBatFor(const QString &basePath, const QString &toolchainName); static QString vcVarsBatFor(const QString &basePath, MsvcToolChain::Platform platform); private: static bool checkForVisualStudioInstallation(const QString &vsName);