Ninja: Identifier encoding rules for ' ' and ':'

This commit is contained in:
Peter Collingbourne 2012-02-18 19:04:55 +00:00
parent 99856d537c
commit 9362440a0b
1 changed files with 6 additions and 2 deletions

View File

@ -56,7 +56,8 @@ static bool IsIdentChar(char c)
('a' <= c && c <= 'z') ||
('+' <= c && c <= '9') || // +,-./ and numbers
('A' <= c && c <= 'Z') ||
(c == '_') || (c == '$') || (c == '\\');
(c == '_') || (c == '$') || (c == '\\') ||
(c == ' ') || (c == ':');
}
std::string cmGlobalNinjaGenerator::EncodeIdent(const std::string &ident,
@ -69,7 +70,10 @@ std::string cmGlobalNinjaGenerator::EncodeIdent(const std::string &ident,
vars << names.str() << " = " << ident << "\n";
return "$" + names.str();
} else {
return ident;
std::string result = ident;
cmSystemTools::ReplaceString(result, " ", "$ ");
cmSystemTools::ReplaceString(result, ":", "$:");
return result;
}
}