diff options
author | Andy Shaw <andy.shaw@qt.io> | 2018-03-22 20:02:05 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2018-03-26 09:19:57 +0000 |
commit | cf5075c9cda86e2baea30b1b3a93379cd667979a (patch) | |
tree | a865c069c4bebe07eb1881709ae98fd2b6dde692 | |
parent | adb169149c2aff23f069dd9850e7afa9b6d19e45 (diff) |
Clang-cl: Fix restoration of clang-cl compiler
compilerCommand was not restored, so isValid failed.
Task-number: QTCREATORBUG-19255
Change-Id: Idc65aaf2eaad348f05cdf4dfd057bbd10c6c4e4c
Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.cpp | 15 | ||||
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.h | 3 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index a64b749e33c..64c1a05fda1 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -745,7 +745,10 @@ void ClangClToolChainConfigWidget::setFromClangClToolChain() // clang-cl.exe as a [to some extent] compatible drop-in replacement for cl. // -------------------------------------------------------------------------- -static const char clangClBinary[] = "clang-cl.exe"; +static QString compilerFromPath(const QString &path) +{ + return path + "/bin/clang-cl.exe"; +} ClangClToolChain::ClangClToolChain(const QString &name, const QString &llvmDir, const Abi &abi, @@ -753,7 +756,6 @@ ClangClToolChain::ClangClToolChain(const QString &name, const QString &llvmDir, Detection d) : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, name, abi, varsBat, varsBatArg, language, d) , m_llvmDir(llvmDir) - , m_compiler(Utils::FileName::fromString(m_llvmDir + QStringLiteral("/bin/") + QLatin1String(clangClBinary))) { } ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID) @@ -761,7 +763,7 @@ ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHA bool ClangClToolChain::isValid() const { - return MsvcToolChain::isValid() && m_compiler.exists(); + return MsvcToolChain::isValid() && compilerCommand().exists(); } void ClangClToolChain::addToEnvironment(Utils::Environment &env) const @@ -770,6 +772,11 @@ void ClangClToolChain::addToEnvironment(Utils::Environment &env) const env.prependOrSetPath(m_llvmDir + QStringLiteral("/bin")); } +Utils::FileName ClangClToolChain::compilerCommand() const +{ + return Utils::FileName::fromString(compilerFromPath(m_llvmDir)); +} + QString ClangClToolChain::typeDisplayName() const { return QCoreApplication::translate("ProjectExplorer::ClangToolChainFactory", "Clang"); @@ -933,7 +940,7 @@ static void detectClangClToolChain(QList<ToolChain *> *list) const QString path = QDir::cleanPath(registry.value(QStringLiteral(".")).toString()); if (path.isEmpty()) return; - const unsigned char wordWidth = Utils::is64BitWindowsBinary(path + QStringLiteral("/bin/") + QLatin1String(clangClBinary)) + const unsigned char wordWidth = Utils::is64BitWindowsBinary(compilerFromPath(path)) ? 64 : 32; const ToolChain *toolChain = findMsvcToolChain(*list, wordWidth, Abi::WindowsMsvc2015Flavor); if (!toolChain) diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 3dcb715286a..f6aaf540f6c 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -107,7 +107,7 @@ public: QString typeDisplayName() const override; QList<Utils::FileName> suggestedMkspecList() const override; void addToEnvironment(Utils::Environment &env) const override; - Utils::FileName compilerCommand() const override { return m_compiler; } + Utils::FileName compilerCommand() const override; IOutputParser *outputParser() const override; ToolChain *clone() const override; QVariantMap toMap() const override; @@ -118,7 +118,6 @@ public: private: QString m_llvmDir; - Utils::FileName m_compiler; }; // -------------------------------------------------------------------------- |