mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Merge topic 'encode-literal-inplace'
5c3f188bef GlobalNinjaGenerator: Add EncodeLiteralInplace which doesn't copy
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6904
This commit is contained in:
@@ -166,14 +166,18 @@ std::string cmGlobalNinjaGenerator::EncodeRuleName(std::string const& name)
|
||||
std::string cmGlobalNinjaGenerator::EncodeLiteral(const std::string& lit)
|
||||
{
|
||||
std::string result = lit;
|
||||
cmSystemTools::ReplaceString(result, "$", "$$");
|
||||
cmSystemTools::ReplaceString(result, "\n", "$\n");
|
||||
EncodeLiteralInplace(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
void cmGlobalNinjaGenerator::EncodeLiteralInplace(std::string& lit)
|
||||
{
|
||||
cmSystemTools::ReplaceString(lit, "$", "$$");
|
||||
cmSystemTools::ReplaceString(lit, "\n", "$\n");
|
||||
if (this->IsMultiConfig()) {
|
||||
cmSystemTools::ReplaceString(result,
|
||||
cmStrCat('$', this->GetCMakeCFGIntDir()),
|
||||
cmSystemTools::ReplaceString(lit, cmStrCat('$', this->GetCMakeCFGIntDir()),
|
||||
this->GetCMakeCFGIntDir());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string cmGlobalNinjaGenerator::EncodePath(const std::string& path)
|
||||
@@ -185,7 +189,7 @@ std::string cmGlobalNinjaGenerator::EncodePath(const std::string& path)
|
||||
else
|
||||
std::replace(result.begin(), result.end(), '/', '\\');
|
||||
#endif
|
||||
result = this->EncodeLiteral(result);
|
||||
this->EncodeLiteralInplace(result);
|
||||
cmSystemTools::ReplaceString(result, " ", "$ ");
|
||||
cmSystemTools::ReplaceString(result, ":", "$:");
|
||||
return result;
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
|
||||
static std::string EncodeRuleName(std::string const& name);
|
||||
std::string EncodeLiteral(const std::string& lit);
|
||||
void EncodeLiteralInplace(std::string& lit);
|
||||
std::string EncodePath(const std::string& path);
|
||||
|
||||
std::unique_ptr<cmLinkLineComputer> CreateLinkLineComputer(
|
||||
|
||||
Reference in New Issue
Block a user