summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2002-09-27 20:19:37 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2002-09-27 20:19:37 (GMT)
commiteb6bba34cd2fcef722f8db55d81beb6393e83744 (patch)
treeb289d39b56c0fff5ba4c564b2892046dfa4c0769
parentcc6d56182dd740d248e37dfe1139f4f2c56bba75 (diff)
downloadCMake-eb6bba34cd2fcef722f8db55d81beb6393e83744.zip
CMake-eb6bba34cd2fcef722f8db55d81beb6393e83744.tar.gz
CMake-eb6bba34cd2fcef722f8db55d81beb6393e83744.tar.bz2
BUG: fix doc string and allow a variable to be promoted from non-cache to cache
-rw-r--r--Source/cmSetCommand.cxx16
-rw-r--r--Source/cmSetCommand.h3
2 files changed, 11 insertions, 8 deletions
diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx
index 6065780..083f422 100644
--- a/Source/cmSetCommand.cxx
+++ b/Source/cmSetCommand.cxx
@@ -107,19 +107,21 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
type = cmCacheManager::StringToType(args[cacheStart+1].c_str());
docstring = args[cacheStart+2].c_str();
}
- // get the current cache value for the variable
- const char* cacheValue =
- m_Makefile->GetDefinition(variable);
- if(cacheValue)
+ // see if this is already in the cache
+ cmCacheManager::CacheIterator it =
+ m_Makefile->GetCacheManager()->GetCacheIterator(variable);
+ if(!it.IsAtEnd())
{
- // if it is not a cached value, or it is a cached
- // value that is not internal keep the value found
- // in the cache
+ // if the set is trying to CACHE the value but the value
+ // is already in the cache and the type is not internal
+ // then leave now without setting any definitions in the cache
+ // or the makefile
if(cache && type != cmCacheManager::INTERNAL)
{
return true;
}
}
+
// if it is meant to be in the cache then define it in the cache
if(cache)
{
diff --git a/Source/cmSetCommand.h b/Source/cmSetCommand.h
index 720a805..2b55bd9 100644
--- a/Source/cmSetCommand.h
+++ b/Source/cmSetCommand.h
@@ -70,7 +70,8 @@ public:
"SET(VAR [VALUE] [CACHE TYPE DOCSTRING])\n"
"Within CMAKE sets VAR to the value VALUE. VALUE is expanded before VAR "
"is set to it. If CACHE is present, then the VAR is put in the cache."
- " TYPE and DOCSTRING are required. If TYPE is INTERNAL, then the "
+ " TYPE and DOCSTRING are required. TYPE may be BOOL, PATH, FILEPATH, STRING, INTERNAL, "
+ "or STATIC. If TYPE is INTERNAL, then the "
" VALUE is Always written into the cache, replacing any values "
"existing in the cache. If it is not a CACHE VAR, then this always "
"writes into the current makefile.\n"