فهرست منبع

ENH: some cleanup of get property commands

Ken Martin 18 سال پیش
والد
کامیت
8c641677e9
2فایلهای تغییر یافته به همراه80 افزوده شده و 77 حذف شده
  1. 7 77
      Source/cmGetDirectoryPropertyCommand.cxx
  2. 73 0
      Source/cmMakefile.cxx

+ 7 - 77
Source/cmGetDirectoryPropertyCommand.cxx

@@ -28,7 +28,6 @@ bool cmGetDirectoryPropertyCommand::InitialPass(
     return false;
     return false;
     }
     }
   
   
-  std::vector<std::string>::size_type cc;
   std::vector<std::string>::const_iterator i = args.begin();
   std::vector<std::string>::const_iterator i = args.begin();
   std::string variable = *i;
   std::string variable = *i;
   ++i;
   ++i;
@@ -76,72 +75,7 @@ bool cmGetDirectoryPropertyCommand::InitialPass(
   // OK, now we have the directory to process, we just get the requested
   // OK, now we have the directory to process, we just get the requested
   // information out of it
   // information out of it
   
   
-  if ( *i == "VARIABLES" || *i == "CACHE_VARIABLES" )
-    {
-    int cacheonly = 0;
-    if ( *i == "CACHE_VARIABLES" )
-      {
-      cacheonly = 1;
-      }
-    std::vector<std::string> vars = dir->GetDefinitions(cacheonly);
-    for ( cc = 0; cc < vars.size(); cc ++ )
-      {
-      if ( cc > 0 )
-        {
-        output += ";";
-        }
-      output += vars[cc];
-      }
-    }
-  else if ( *i == "MACROS" )
-    {
-    dir->GetListOfMacros(output);
-    }
-  else if ( *i == "DEFINITIONS" )
-    {
-    output = dir->GetDefineFlags();
-    }
-  else if ( *i == "INCLUDE_DIRECTORIES" )
-    {
-    std::vector<std::string>::iterator it;
-    int first = 1;
-    cmOStringStream str;
-    for ( it = dir->GetIncludeDirectories().begin();
-      it != dir->GetIncludeDirectories().end();
-      ++ it )
-      {
-      if ( !first )
-        {
-        str << ";";
-        }
-      str << it->c_str();
-      first = 0;
-      }
-    output = str.str();
-    }
-  else if ( *i == "INCLUDE_REGULAR_EXPRESSION" )
-    {
-    output = dir->GetIncludeRegularExpression();
-    }
-  else if ( *i == "LINK_DIRECTORIES" )
-    {
-    std::vector<std::string>::iterator it;
-    int first = 1;
-    cmOStringStream str;
-    for ( it = dir->GetLinkDirectories().begin();
-      it != dir->GetLinkDirectories().end();
-      ++ it )
-      {
-      if ( !first )
-        {
-        str << ";";
-        }
-      str << it->c_str();
-      first = 0;
-      }
-    output = str.str();
-    }
-  else if ( *i == "DEFINITION" )
+  if ( *i == "DEFINITION" )
     {
     {
     ++i;
     ++i;
     if (i == args.end())
     if (i == args.end())
@@ -151,20 +85,16 @@ bool cmGetDirectoryPropertyCommand::InitialPass(
       return false;
       return false;
       }
       }
     output = dir->GetSafeDefinition(i->c_str());
     output = dir->GetSafeDefinition(i->c_str());
+    this->Makefile->AddDefinition(variable.c_str(), output.c_str());
     }
     }
-  else
+
+  const char *prop = dir->GetProperty(i->c_str());
+  if (prop)
     {
     {
-    const char *prop = dir->GetProperty(i->c_str());
-    if (prop)
-      {
-      this->Makefile->AddDefinition(variable.c_str(), prop);
-      return true;
-      }
-    this->Makefile->AddDefinition(variable.c_str(), "");
+    this->Makefile->AddDefinition(variable.c_str(), prop);
     return true;
     return true;
     }
     }
-  this->Makefile->AddDefinition(variable.c_str(), output.c_str());
-  
+  this->Makefile->AddDefinition(variable.c_str(), "");
   return true;
   return true;
 }
 }
 
 

+ 73 - 0
Source/cmMakefile.cxx

@@ -2614,6 +2614,79 @@ const char *cmMakefile::GetProperty(const char* prop,
     this->SetProperty("LISTFILE_STACK",tmp.c_str());
     this->SetProperty("LISTFILE_STACK",tmp.c_str());
     }
     }
 
 
+  // some other special properties sigh
+  std::string output = "";
+  if (!strcmp("VARIABLES",prop) || !strcmp("CACHE_VARIABLES",prop))
+    {
+    int cacheonly = 0;
+    if ( !strcmp("CACHE_VARIABLES",prop) )
+      {
+      cacheonly = 1;
+      }
+    std::vector<std::string> vars = this->GetDefinitions(cacheonly);
+    for (unsigned int cc = 0; cc < vars.size(); cc ++ )
+      {
+      if ( cc > 0 )
+        {
+        output += ";";
+        }
+      output += vars[cc];
+      }
+    this->SetProperty(prop, output.c_str());
+    }
+  else if (!strcmp("MACROS",prop))
+    {
+    this->GetListOfMacros(output);
+    this->SetProperty(prop, output.c_str());
+    }
+  else if (!strcmp("DEFINITIONS",prop))
+    {
+    output = this->GetDefineFlags();
+    this->SetProperty(prop, output.c_str());
+    }
+  else if (!strcmp("INCLUDE_DIRECTORIES",prop) )
+    {
+    std::vector<std::string>::iterator it;
+    int first = 1;
+    cmOStringStream str;
+    for ( it = this->GetIncludeDirectories().begin();
+      it != this->GetIncludeDirectories().end();
+      ++ it )
+      {
+      if ( !first )
+        {
+        str << ";";
+        }
+      str << it->c_str();
+      first = 0;
+      }
+    output = str.str();
+    this->SetProperty(prop, output.c_str());
+    }
+  else if (!strcmp("INCLUDE_REGULAR_EXPRESSION",prop) )
+    {
+    return this->GetIncludeRegularExpression();
+    }
+  else if (!strcmp("LINK_DIRECTORIES",prop))
+    {
+    std::vector<std::string>::iterator it;
+    int first = 1;
+    cmOStringStream str;
+    for ( it = this->GetLinkDirectories().begin();
+      it != this->GetLinkDirectories().end();
+      ++ it )
+      {
+      if ( !first )
+        {
+        str << ";";
+        }
+      str << it->c_str();
+      first = 0;
+      }
+    output = str.str();
+    this->SetProperty(prop, output.c_str());
+    }
+
   bool chain = false;
   bool chain = false;
   const char *retVal =
   const char *retVal =
     this->Properties.GetPropertyValue(prop, scope, chain);
     this->Properties.GetPropertyValue(prop, scope, chain);