diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index f4824660c45..bbeb34deed2 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -337,6 +337,19 @@ CMakeConfig BuildDirManager::parsedConfiguration() const return m_cmakeCache; } +CMakeConfig BuildDirManager::parseConfiguration(const Utils::FileName &cacheFile, QString *errorMessage) +{ + if (!cacheFile.exists()) { + if (errorMessage) + *errorMessage = tr("CMakeCache.txt file not found."); + return { }; + } + CMakeConfig result = CMakeConfigItem::itemsFromFile(cacheFile, errorMessage); + if (!errorMessage->isEmpty()) + return { }; + return result; +} + void BuildDirManager::checkConfiguration() { if (m_tempDir) // always throw away changes in the tmpdir! diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index af70aa5e0d6..3d2fb108826 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -78,15 +78,15 @@ public: QList buildTargets() const; CMakeConfig parsedConfiguration() const; + static CMakeConfig parseConfiguration(const Utils::FileName &cacheFile, + QString *errorMessage); + signals: void configurationStarted() const; void dataAvailable() const; void errorOccured(const QString &err) const; protected: - static CMakeConfig parseConfiguration(const Utils::FileName &cacheFile, - QString *errorMessage); - const Utils::FileName workDirectory() const; private: diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index 40b2f8f623b..836dad964d4 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -25,6 +25,7 @@ #include "tealeafreader.h" +#include "builddirmanager.h" #include "cmakebuildconfiguration.h" #include "cmakecbpparser.h" #include "cmakekitinformation.h" @@ -222,15 +223,16 @@ QList TeaLeafReader::buildTargets() const CMakeConfig TeaLeafReader::takeParsedConfiguration() { - CMakeConfig result; FileName cacheFile = m_parameters.buildDirectory; cacheFile.appendPath(QLatin1String("CMakeCache.txt")); - if (!cacheFile.exists()) - return result; QString errorMessage; - result = CMakeConfigItem::itemsFromFile(cacheFile, &errorMessage); - if (!errorMessage.isEmpty()) + CMakeConfig result = BuildDirManager::parseConfiguration(cacheFile, &errorMessage); + + if (!errorMessage.isEmpty()) { emit errorOccured(errorMessage); + return { }; + } + const FileName sourceOfBuildDir = FileName::fromUtf8(CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", result)); const FileName canonicalSourceOfBuildDir = FileUtils::canonicalPath(sourceOfBuildDir); @@ -239,6 +241,7 @@ CMakeConfig TeaLeafReader::takeParsedConfiguration() emit errorOccured(tr("The build directory is not for %1 but for %2") .arg(canonicalSourceOfBuildDir.toUserOutput(), canonicalSourceDirectory.toUserOutput())); + return { }; } return result; }