فهرست منبع

BUG: Fix cache properties for CMAKE_STRICT build

All cmPropertyMap instances must have CMakeInstance set.  This teaches
cmCacheManager to set it on cache entries.
Brad King 16 سال پیش
والد
کامیت
5e49dc4346
3فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 5 1
      Source/cmCacheManager.cxx
  2. 3 1
      Source/cmCacheManager.h
  3. 1 1
      Source/cmake.cxx

+ 5 - 1
Source/cmCacheManager.cxx

@@ -42,10 +42,11 @@ const char* cmCacheManagerTypes[] =
   0
 };
 
-cmCacheManager::cmCacheManager()
+cmCacheManager::cmCacheManager(cmake* cm)
 {
   this->CacheMajorVersion = 0;
   this->CacheMinorVersion = 0;
+  this->CMakeInstance = cm;
 }
 
 const char* cmCacheManager::TypeToString(cmCacheManager::CacheEntryType type)
@@ -226,6 +227,7 @@ bool cmCacheManager::LoadCache(const char* path,
     // Format is key:type=value
     std::string helpString;
     CacheEntry e;
+    e.Properties.SetCMakeInstance(this->CMakeInstance);
     cmSystemTools::GetLineFromStream(fin, buffer);
     realbuffer = buffer.c_str();
     while(*realbuffer != '0' &&
@@ -384,6 +386,7 @@ bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey,
         {
         // Create an entry and store the property.
         CacheEntry& ne = this->Cache[key];
+        ne.Properties.SetCMakeInstance(this->CMakeInstance);
         ne.Type = cmCacheManager::UNINITIALIZED;
         ne.SetProperty(*p, e.Value.c_str());
         }
@@ -724,6 +727,7 @@ void cmCacheManager::AddCacheEntry(const char* key,
                                    CacheEntryType type)
 {
   CacheEntry& e = this->Cache[key];
+  e.Properties.SetCMakeInstance(this->CMakeInstance);
   if ( value )
     {
     e.Value = value;

+ 3 - 1
Source/cmCacheManager.h

@@ -21,6 +21,7 @@
 #include "cmPropertyMap.h"
 class cmMakefile;
 class cmMarkAsAdvancedCommand;
+class cmake;
 
 /** \class cmCacheManager
  * \brief Control class for cmake's cache
@@ -31,7 +32,7 @@ class cmMarkAsAdvancedCommand;
 class cmCacheManager
 {
 public:
-  cmCacheManager();
+  cmCacheManager(cmake* cm);
   class CacheIterator;
   friend class cmCacheManager::CacheIterator;
   enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC, 
@@ -175,6 +176,7 @@ protected:
   unsigned int CacheMajorVersion;
   unsigned int CacheMinorVersion;
 private:
+  cmake* CMakeInstance;
   typedef  std::map<cmStdString, CacheEntry> CacheEntryMap;
   static void OutputHelpString(std::ostream& fout,
                                const std::string& helpString);

+ 1 - 1
Source/cmake.cxx

@@ -176,7 +176,7 @@ cmake::cmake()
 
   this->Verbose = false;
   this->InTryCompile = false;
-  this->CacheManager = new cmCacheManager;
+  this->CacheManager = new cmCacheManager(this);
   this->GlobalGenerator = 0;
   this->ProgressCallback = 0;
   this->ProgressCallbackClientData = 0;