From 7b8b751637c4a2956ef9d899cf18302da038f4ed Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Sat, 8 Jun 2024 08:14:57 -0400 Subject: [PATCH] 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. --- Source/cmGlobalGenerator.h | 12 ++++++++++++ Source/cmGlobalNinjaGenerator.cxx | 5 +++++ Source/cmGlobalNinjaGenerator.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 5011c172de..85dec7279b 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -594,6 +594,18 @@ public: virtual bool SupportsCrossConfigs() 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); void ProcessEvaluationFiles(); diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index b051d67a65..1a7327cfa6 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -3149,6 +3149,11 @@ bool cmGlobalNinjaGenerator::IsSingleConfigUtility( !this->PerConfigUtilityTargets.count(target->GetName()); } +std::string cmGlobalNinjaGenerator::ConvertToOutputPath(std::string path) const +{ + return this->ConvertToNinjaPath(path); +} + const char* cmGlobalNinjaMultiGenerator::NINJA_COMMON_FILE = "CMakeFiles/common.ninja"; const char* cmGlobalNinjaMultiGenerator::NINJA_FILE_EXTENSION = ".ninja"; diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 6ad38fbc34..1cdcfb7de9 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -484,6 +484,8 @@ public: bool CheckCxxModuleSupport(CxxModuleSupportQuery query) override; + std::string ConvertToOutputPath(std::string path) const override; + protected: std::vector const& GetConfigNames() const;