Sfoglia il codice sorgente

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 anni fa
parent
commit
5e49dc4346
3 ha cambiato i file con 9 aggiunte e 3 eliminazioni
  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;