Explorar el Código

Fix for bug #12413, nmake did not handle targets with + in the name.

If you had a + in the name of a target with nmake, it created a variable
in the makefile that used + in its name, which is not allowed by nmake.
To make the implementation easier, + is now not allowed for any make
generators as part of a variable name.
Bill Hoffman hace 14 años
padre
commit
281f51e063
Se han modificado 1 ficheros con 2 adiciones y 0 borrados
  1. 2 0
      Source/cmLocalUnixMakefileGenerator3.cxx

+ 2 - 0
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -1276,6 +1276,7 @@ cmLocalUnixMakefileGenerator3
   // and there are no "." charactors in the string, then return the
   // and there are no "." charactors in the string, then return the
   // unmodified combination.
   // unmodified combination.
   if((!this->MakefileVariableSize && unmodified.find('.') == s.npos)
   if((!this->MakefileVariableSize && unmodified.find('.') == s.npos)
+     && (!this->MakefileVariableSize && unmodified.find('+') == s.npos)
      && (!this->MakefileVariableSize && unmodified.find('-') == s.npos))
      && (!this->MakefileVariableSize && unmodified.find('-') == s.npos))
     {
     {
     return unmodified;
     return unmodified;
@@ -1297,6 +1298,7 @@ cmLocalUnixMakefileGenerator3
     {
     {
     cmSystemTools::ReplaceString(ret, ".", "_");
     cmSystemTools::ReplaceString(ret, ".", "_");
     cmSystemTools::ReplaceString(ret, "-", "__");
     cmSystemTools::ReplaceString(ret, "-", "__");
+    cmSystemTools::ReplaceString(ret, "+", "___");
     int ni = 0;
     int ni = 0;
     char buffer[5];
     char buffer[5];
     // make sure the _ version is not already used, if
     // make sure the _ version is not already used, if