diff options
-rw-r--r-- | Source/cmMakefile.cxx | 10 | ||||
-rw-r--r-- | Source/cmMakefile.h | 3 | ||||
-rw-r--r-- | Source/cmSetCommand.cxx | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 168afde..424ca00 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1561,7 +1561,8 @@ void cmMakefile::AddDefinition(const char* name, const char* value) void cmMakefile::AddCacheDefinition(const char* name, const char* value, const char* doc, - cmCacheManager::CacheEntryType type) + cmCacheManager::CacheEntryType type, + bool force) { const char* val = value; cmCacheManager::CacheIterator it = @@ -1569,7 +1570,12 @@ void cmMakefile::AddCacheDefinition(const char* name, const char* value, if(!it.IsAtEnd() && (it.GetType() == cmCacheManager::UNINITIALIZED) && it.Initialized()) { - val = it.GetValue(); + // if this is not a force, then use the value from the cache + // if it is a force, then use the value being passed in + if(!force) + { + val = it.GetValue(); + } if ( type == cmCacheManager::PATH || type == cmCacheManager::FILEPATH ) { std::vector<std::string>::size_type cc; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 971496d..5a12d2e 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -264,7 +264,8 @@ public: ///! Add a definition to this makefile and the global cmake cache. void AddCacheDefinition(const char* name, const char* value, const char* doc, - cmCacheManager::CacheEntryType type); + cmCacheManager::CacheEntryType type, + bool force = false); /** * Add bool variable definition to the build. diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx index 5939990..1be75ce 100644 --- a/Source/cmSetCommand.cxx +++ b/Source/cmSetCommand.cxx @@ -171,7 +171,7 @@ bool cmSetCommand this->Makefile->AddCacheDefinition(variable, value.c_str(), docstring, - type); + type, force); } else { |