Browse Source

ENH: make sure properties are re-set on each configure

Bill Hoffman 17 years ago
parent
commit
8bf388109d
2 changed files with 18 additions and 9 deletions
  1. 17 9
      Source/cmake.cxx
  2. 1 0
      Source/cmake.h

+ 17 - 9
Source/cmake.cxx

@@ -146,15 +146,7 @@ cmake::cmake()
   this->FileComparison = new cmFileTimeComparison;
 
   this->Policies = new cmPolicies();
-
-  this->Properties.SetCMakeInstance(this);
-
-  // initialize properties
-  cmSourceFile::DefineProperties(this);
-  cmTarget::DefineProperties(this);
-  cmMakefile::DefineProperties(this);
-  cmTest::DefineProperties(this);
-  cmake::DefineProperties(this);
+  this->InitializeProperties();
 
 #ifdef __APPLE__
   struct rlimit rlp;
@@ -224,8 +216,24 @@ cmake::~cmake()
   delete this->FileComparison;
 }
 
+void cmake::InitializeProperties()
+{
+  this->Properties.clear();
+  this->Properties.SetCMakeInstance(this);
+
+  // initialize properties
+  cmSourceFile::DefineProperties(this);
+  cmTarget::DefineProperties(this);
+  cmMakefile::DefineProperties(this);
+  cmTest::DefineProperties(this);
+  cmake::DefineProperties(this);
+  this->AccessedProperties.clear();
+  this->PropertyDefinitions.clear();
+}
+
 void cmake::CleanupCommandsAndMacros()
 {
+  this->InitializeProperties();
   std::vector<cmCommand*> commands;
   for(RegisteredCommandsMap::iterator j = this->Commands.begin();
       j != this->Commands.end(); ++j)

+ 1 - 0
Source/cmake.h

@@ -349,6 +349,7 @@ class cmake
       this->SuppressDevWarnings = v;
     }
 protected:
+  void InitializeProperties();
   int HandleDeleteCacheVariables(const char* var);
   cmPropertyMap Properties;
   std::set<std::pair<cmStdString,cmProperty::ScopeType> > AccessedProperties;