Browse Source

cmGlobalGenerator: add a method to make an output-formatted string

This is needed to inject arguments through flag generation mechanisms so
that they can all be unescaped uniformly. Eventually, these methods
should go away and the escape/unescape dance be avoided completely.
Ben Boeckel 1 năm trước cách đây
mục cha
commit
7b8b751637

+ 12 - 0
Source/cmGlobalGenerator.h

@@ -594,6 +594,18 @@ public:
   virtual bool SupportsCrossConfigs() const { return false; }
   virtual bool SupportsCrossConfigs() const { return false; }
   virtual bool SupportsDefaultConfigs() const { return false; }
   virtual bool SupportsDefaultConfigs() const { return false; }
 
 
+  virtual std::string ConvertToOutputPath(std::string path) const
+  {
+    return path;
+  }
+  virtual std::string GetConfigDirectory(std::string const& config) const
+  {
+    if (!this->IsMultiConfig() || config.empty()) {
+      return {};
+    }
+    return cmStrCat('/', config);
+  }
+
   static std::string EscapeJSON(const std::string& s);
   static std::string EscapeJSON(const std::string& s);
 
 
   void ProcessEvaluationFiles();
   void ProcessEvaluationFiles();

+ 5 - 0
Source/cmGlobalNinjaGenerator.cxx

@@ -3149,6 +3149,11 @@ bool cmGlobalNinjaGenerator::IsSingleConfigUtility(
     !this->PerConfigUtilityTargets.count(target->GetName());
     !this->PerConfigUtilityTargets.count(target->GetName());
 }
 }
 
 
+std::string cmGlobalNinjaGenerator::ConvertToOutputPath(std::string path) const
+{
+  return this->ConvertToNinjaPath(path);
+}
+
 const char* cmGlobalNinjaMultiGenerator::NINJA_COMMON_FILE =
 const char* cmGlobalNinjaMultiGenerator::NINJA_COMMON_FILE =
   "CMakeFiles/common.ninja";
   "CMakeFiles/common.ninja";
 const char* cmGlobalNinjaMultiGenerator::NINJA_FILE_EXTENSION = ".ninja";
 const char* cmGlobalNinjaMultiGenerator::NINJA_FILE_EXTENSION = ".ninja";

+ 2 - 0
Source/cmGlobalNinjaGenerator.h

@@ -484,6 +484,8 @@ public:
 
 
   bool CheckCxxModuleSupport(CxxModuleSupportQuery query) override;
   bool CheckCxxModuleSupport(CxxModuleSupportQuery query) override;
 
 
+  std::string ConvertToOutputPath(std::string path) const override;
+
 protected:
 protected:
   std::vector<std::string> const& GetConfigNames() const;
   std::vector<std::string> const& GetConfigNames() const;