Selaa lähdekoodia

ENH: change expand variables to use GetDefinition

Bill Hoffman 24 vuotta sitten
vanhempi
sitoutus
f709e5588e
3 muutettua tiedostoa jossa 32 lisäystä ja 28 poistoa
  1. 6 6
      Source/cmMakefile.cxx
  2. 1 1
      Source/cmMakefile.h
  3. 25 21
      Source/cmUnixMakefileGenerator.cxx

+ 6 - 6
Source/cmMakefile.cxx

@@ -787,9 +787,9 @@ bool cmMakefile::IsOn(const char* name)
   return cmSystemTools::IsOn(value);
   return cmSystemTools::IsOn(value);
 }
 }
 
 
-const char* cmMakefile::GetDefinition(const char* name)
+const char* cmMakefile::GetDefinition(const char* name) const
 {
 {
-  DefinitionMap::iterator pos = m_Definitions.find(name);
+  DefinitionMap::const_iterator pos = m_Definitions.find(name);
   if(pos != m_Definitions.end())
   if(pos != m_Definitions.end())
     {
     {
     return (*pos).second.c_str();
     return (*pos).second.c_str();
@@ -929,16 +929,16 @@ void cmMakefile::ExpandVariablesInString(std::string& source,
           }
           }
         else
         else
           {
           {
-          DefinitionMap::const_iterator pos = m_Definitions.find(var.c_str());
-          if(pos != m_Definitions.end())
+          const char* lookup = this->GetDefinition(var.c_str());
+          if(lookup)
             {
             {
             if (escapeQuotes)
             if (escapeQuotes)
               {
               {
-              result += cmSystemTools::EscapeQuotes((*pos).second.c_str());
+              result += cmSystemTools::EscapeQuotes(lookup);
               }
               }
             else
             else
               {
               {
-              result += (*pos).second;
+              result += lookup;
               }
               }
             found = true;
             found = true;
             }
             }

+ 1 - 1
Source/cmMakefile.h

@@ -452,7 +452,7 @@ public:
    * If the variable is not found in this makefile instance, the
    * If the variable is not found in this makefile instance, the
    * cache is then queried.
    * cache is then queried.
    */
    */
-  const char* GetDefinition(const char*);
+  const char* GetDefinition(const char*) const;
   
   
   /** Test a boolean cache entry to see if it is true or false, 
   /** Test a boolean cache entry to see if it is true or false, 
    *  returns false if no entry defined.
    *  returns false if no entry defined.

+ 25 - 21
Source/cmUnixMakefileGenerator.cxx

@@ -1370,27 +1370,31 @@ void cmUnixMakefileGenerator::ComputeSystemInfo()
 {
 {
   if (m_CacheOnly)
   if (m_CacheOnly)
     {
     {
-      if(m_Makefile->GetDefinition("CMAKE_CXX_COMPILER"))
-	{
-          std::string env = "CXX=${CMAKE_CXX_COMPILER}";
-          m_Makefile->ExpandVariablesInString(env);
-	  putenv(const_cast<char*>(env.c_str()));
-	  env = "CC=${CMAKE_C_COMPILER}";
-	  m_Makefile->ExpandVariablesInString(env);
-	  putenv(const_cast<char*>(env.c_str()));
-	}
-      
-      // currently we run configure shell script here to determine the info
-      std::string output;
-      std::string cmd = "cd ";
-      cmd += m_Makefile->GetHomeOutputDirectory();
-      cmd += "; ";
-      const char* root
-	= m_Makefile->GetDefinition("CMAKE_ROOT");
-      cmd += root;
-      cmd += "/Templates/configure";
-      cmSystemTools::RunCommand(cmd.c_str(), output);
-      m_Makefile->AddDefinition("RUN_CONFIGURE", true);
+    if(m_Makefile->GetDefinition("CMAKE_CXX_COMPILER"))
+      {
+      std::string env = "CXX=${CMAKE_CXX_COMPILER}";
+      m_Makefile->ExpandVariablesInString(env);
+      std::cout << "Setting: " << env.c_str() << "\n";
+      putenv(const_cast<char*>(env.c_str()));
+      }
+    if(m_Makefile->GetDefinition("CMAKE_C_COMPILER"))
+      {
+      std::string env = "CC=${CMAKE_C_COMPILER}";
+      m_Makefile->ExpandVariablesInString(env);
+      std::cout << "Setting: " << env.c_str() << "\n";
+      putenv(const_cast<char*>(env.c_str()));
+      }
+    // currently we run configure shell script here to determine the info
+    std::string output;
+    std::string cmd = "cd ";
+    cmd += m_Makefile->GetHomeOutputDirectory();
+    cmd += "; ";
+    const char* root
+      = m_Makefile->GetDefinition("CMAKE_ROOT");
+    cmd += root;
+    cmd += "/Templates/configure";
+    cmSystemTools::RunCommand(cmd.c_str(), output);
+    m_Makefile->AddDefinition("RUN_CONFIGURE", true);
     }
     }
 
 
   // now load the settings
   // now load the settings