diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index d4944d75337cb031ccc83f0cbdef2caa31e278fe..e5b620fc85ad4082077679a3e23619bda9ee6aec 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -273,9 +273,11 @@ CMakeConfig BuildDirManager::parsedConfiguration() const Utils::FileName cacheFile = workDirectory(); cacheFile.appendPath(QLatin1String("CMakeCache.txt")); QString errorMessage; - CMakeConfig result = parseConfiguration(cacheFile, sourceDirectory(), &errorMessage); + CMakeConfig result = parseConfiguration(cacheFile, &errorMessage); if (!errorMessage.isEmpty()) emit errorOccured(errorMessage); + if (CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", result) != sourceDirectory().toString().toUtf8()) + emit errorOccured(tr("The build directory is not for %1").arg(sourceDirectory().toUserOutput())); return result; } @@ -542,7 +544,6 @@ static CMakeConfigItem::Type fromByteArray(const QByteArray &type) { } CMakeConfig BuildDirManager::parseConfiguration(const Utils::FileName &cacheFile, - const Utils::FileName &sourceDir, QString *errorMessage) { CMakeConfig result; @@ -579,19 +580,7 @@ CMakeConfig BuildDirManager::parseConfiguration(const Utils::FileName &cacheFile advancedSet.insert(key.left(key.count() - 9 /* "-ADVANCED" */)); } else { CMakeConfigItem::Type t = fromByteArray(type); - if (t != CMakeConfigItem::INTERNAL) - result << CMakeConfigItem(key, t, documentation, value); - - // Sanity checks: - if (key == "CMAKE_HOME_DIRECTORY") { - const Utils::FileName actualSourceDir = Utils::FileName::fromUserInput(QString::fromUtf8(value)); - if (actualSourceDir != sourceDir) { - if (errorMessage) - *errorMessage = tr("Build directory contains a build of the wrong project (%1).") - .arg(actualSourceDir.toUserOutput()); - return CMakeConfig(); - } - } + result << CMakeConfigItem(key, t, documentation, value); } } diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index 94a4c7b2b8a55d4187791eee0b6dd321c28018db..77d0fc1dc0c5815e512a484894f12e2bc41df64c 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -88,7 +88,6 @@ public: CMakeConfig parsedConfiguration() const; static CMakeConfig parseConfiguration(const Utils::FileName &cacheFile, - const Utils::FileName &sourceDir, QString *errorMessage); signals: diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 8f17f2937db6bbf2f0102f5ba35dd8a0bd03055f..c66779c2c5f12d958522f2cf49b4cb890fafe1d9 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -197,7 +197,9 @@ QList<ConfigModel::DataItem> CMakeBuildConfiguration::completeCMakeConfiguration if (m_completeConfigurationCache.isEmpty()) m_completeConfigurationCache = m_buildDirManager->parsedConfiguration(); - return Utils::transform(m_completeConfigurationCache, [](const CMakeConfigItem &i) { + CMakeConfig cache = Utils::filtered(m_completeConfigurationCache, + [](const CMakeConfigItem &i) { return i.type != CMakeConfigItem::INTERNAL; }); + return Utils::transform(cache, [](const CMakeConfigItem &i) { ConfigModel::DataItem j; j.key = QString::fromUtf8(i.key); j.value = QString::fromUtf8(i.value);