summaryrefslogtreecommitdiffstats
path: root/Source/cmake.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-05-16 19:51:45 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-06-04 10:38:56 (GMT)
commit273ecab96d47d6ddba129be6200bc93ba7910b8c (patch)
tree6d447b544de60b90fb1e539e1fe0be719485a37a /Source/cmake.cxx
parent590a41ba0ead92f3989b3c226632c29fac76bf2e (diff)
downloadCMake-273ecab96d47d6ddba129be6200bc93ba7910b8c.zip
CMake-273ecab96d47d6ddba129be6200bc93ba7910b8c.tar.gz
CMake-273ecab96d47d6ddba129be6200bc93ba7910b8c.tar.bz2
CLI: Suppress the unused warning if the key value pair is cached.
It is common to specify a CMAKE_TOOLCHAIN_FILE and get a warning for using it despite it not being used. The WarnUnusedCliUnused test relies on the warning being emitted each time cmake is run on an existing build. That behavior is changed by this patch to warn only on the first invokation of CMake, and not on subsequent invokations (because the variable is in the cache with the same value). For that test, a clean target is added which clears the cache and cause the warning to be emitted each time. As the Ninja generator does not support the feature needed to test this, it is not tested with that generator.
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r--Source/cmake.cxx13
1 files changed, 12 insertions, 1 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index ae62edb..e757f3a 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -383,11 +383,22 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
cmCacheManager::CacheEntryType type = cmCacheManager::UNINITIALIZED;
if(cmCacheManager::ParseEntry(entry.c_str(), var, value, type))
{
+ // The value is transformed if it is a filepath for example, so
+ // we can't compare whether the value is already in the cache until
+ // after we call AddCacheEntry.
+ const char *cachedValue =
+ this->CacheManager->GetCacheValue(var.c_str());
+
this->CacheManager->AddCacheEntry(var.c_str(), value.c_str(),
"No help, variable specified on the command line.", type);
if(this->WarnUnusedCli)
{
- this->WatchUnusedCli(var.c_str());
+ if (!cachedValue
+ || strcmp(this->CacheManager->GetCacheValue(var.c_str()),
+ cachedValue) != 0)
+ {
+ this->WatchUnusedCli(var.c_str());
+ }
}
}
else