浏览代码

BUG: fix issue with -D and cache force

Bill Hoffman 17 年之前
父节点
当前提交
0c24570ee4
共有 3 个文件被更改,包括 11 次插入4 次删除
  1. 8 2
      Source/cmMakefile.cxx
  2. 2 1
      Source/cmMakefile.h
  3. 1 1
      Source/cmSetCommand.cxx

+ 8 - 2
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;

+ 2 - 1
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. 

+ 1 - 1
Source/cmSetCommand.cxx

@@ -171,7 +171,7 @@ bool cmSetCommand
     this->Makefile->AddCacheDefinition(variable,
                                    value.c_str(),
                                    docstring,
-                                   type);
+                                   type, force);
     }
   else
     {