From 99a884051f4a0130836129a95b0468297120d950 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@theqtcompany.com> Date: Thu, 10 Mar 2016 17:33:45 +0100 Subject: [PATCH] CMake: Export internal cmake cache values Those are useful for the cmake internal classes, but need to be filtered out when they are going to get displayed to the users. Change-Id: I0bb62fa840fa8cb9e6f3b47300ba85a2b186bad0 Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com> Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com> Reviewed-by: Niels Weber <niels.weber@theqtcompany.com> --- .../cmakeprojectmanager/builddirmanager.cpp | 19 ++++--------------- .../cmakeprojectmanager/builddirmanager.h | 1 - .../cmakebuildconfiguration.cpp | 4 +++- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index d4944d75337..e5b620fc85a 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 94a4c7b2b8a..77d0fc1dc0c 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 8f17f2937db..c66779c2c5f 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); -- GitLab