瀏覽代碼

cmake: Remove DebugConfigs member.

It adds needless complexity to global property handling.
Stephen Kelly 10 年之前
父節點
當前提交
ade20b433b
共有 4 個文件被更改,包括 19 次插入35 次删除
  1. 2 2
      Source/cmTarget.cxx
  2. 1 1
      Source/cmTargetLinkLibrariesCommand.cxx
  3. 15 30
      Source/cmake.cxx
  4. 1 2
      Source/cmake.h

+ 2 - 2
Source/cmTarget.cxx

@@ -1157,7 +1157,7 @@ cmTarget::LinkLibraryType cmTarget::ComputeLinkType(
     }
 
   // Get the list of configurations considered to be DEBUG.
-  std::vector<std::string> const& debugConfigs =
+  std::vector<std::string> debugConfigs =
     this->Makefile->GetCMakeInstance()->GetDebugConfigs();
 
   // Check if any entry in the list matches this configuration.
@@ -1216,7 +1216,7 @@ std::string cmTarget::GetDebugGeneratorExpressions(const std::string &value,
     }
 
   // Get the list of configurations considered to be DEBUG.
-  std::vector<std::string> const& debugConfigs =
+  std::vector<std::string> debugConfigs =
                       this->Makefile->GetCMakeInstance()->GetDebugConfigs();
 
   std::string configString = "$<CONFIG:" + debugConfigs[0] + ">";

+ 1 - 1
Source/cmTargetLinkLibrariesCommand.cxx

@@ -467,7 +467,7 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib,
     }
 
   // Get the list of configurations considered to be DEBUG.
-  std::vector<std::string> const& debugConfigs =
+  std::vector<std::string> debugConfigs =
     this->Makefile->GetCMakeInstance()->GetDebugConfigs();
   std::string prop;
 

+ 15 - 30
Source/cmake.cxx

@@ -2283,24 +2283,12 @@ bool cmake::IsPropertyChained(const std::string& name,
 
 void cmake::SetProperty(const std::string& prop, const char* value)
 {
-  // Special hook to invalidate cached value.
-  if(prop == "DEBUG_CONFIGURATIONS")
-    {
-    this->DebugConfigs.clear();
-    }
-
   this->Properties.SetProperty(prop, value, cmProperty::GLOBAL);
 }
 
 void cmake::AppendProperty(const std::string& prop,
                            const char* value, bool asString)
 {
-  // Special hook to invalidate cached value.
-  if(prop == "DEBUG_CONFIGURATIONS")
-    {
-    this->DebugConfigs.clear();
-    }
-
   this->Properties.AppendProperty(prop, value, cmProperty::GLOBAL, asString);
 }
 
@@ -2758,27 +2746,24 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
 }
 
 //----------------------------------------------------------------------------
-std::vector<std::string> const& cmake::GetDebugConfigs()
+std::vector<std::string> cmake::GetDebugConfigs()
 {
-  // Compute on-demand.
-  if(this->DebugConfigs.empty())
+  std::vector<std::string> configs;
+  if(const char* config_list = this->GetProperty("DEBUG_CONFIGURATIONS"))
     {
-    if(const char* config_list = this->GetProperty("DEBUG_CONFIGURATIONS"))
-      {
-      // Expand the specified list and convert to upper-case.
-      cmSystemTools::ExpandListArgument(config_list, this->DebugConfigs);
-      std::transform(this->DebugConfigs.begin(),
-                     this->DebugConfigs.end(),
-                     this->DebugConfigs.begin(),
-                     cmSystemTools::UpperCase);
-      }
-    // If no configurations were specified, use a default list.
-    if(this->DebugConfigs.empty())
-      {
-      this->DebugConfigs.push_back("DEBUG");
-      }
+    // Expand the specified list and convert to upper-case.
+    cmSystemTools::ExpandListArgument(config_list, configs);
+    std::transform(configs.begin(),
+                   configs.end(),
+                   configs.begin(),
+                   cmSystemTools::UpperCase);
+    }
+  // If no configurations were specified, use a default list.
+  if(configs.empty())
+    {
+    configs.push_back("DEBUG");
     }
-  return this->DebugConfigs;
+  return configs;
 }
 
 

+ 1 - 2
Source/cmake.h

@@ -359,7 +359,7 @@ class cmake
 
   /** Get the list of configurations (in upper case) considered to be
       debugging configurations.*/
-  std::vector<std::string> const& GetDebugConfigs();
+  std::vector<std::string> GetDebugConfigs();
 
   void SetCMakeEditCommand(std::string const& s)
     { this->CMakeEditCommand = s; }
@@ -469,7 +469,6 @@ private:
   bool DebugTryCompile;
   cmFileTimeComparison* FileComparison;
   std::string GraphVizFile;
-  std::vector<std::string> DebugConfigs;
   InstalledFilesMap InstalledFiles;
 
   void UpdateConversionPathTable();