BUG: fix short path on files that do not exist

This commit is contained in:
Bill Hoffman 2002-04-19 11:49:12 -04:00
parent 719a334f84
commit 89a697a3b9
1 changed files with 15 additions and 4 deletions

View File

@ -81,13 +81,24 @@ std::string cmNMakeMakefileGenerator::ShortPathCommand(const char* command)
if(reg.find(command))
{
std::string c = reg.match(1);
cmRegularExpression removeIntDir("(.*)/\\$\\(IntDir\\)(.*)");
cmRegularExpression removeIntDir("(.*)(/|\\\\)\\$\\(IntDir\\)(.*)");
if(removeIntDir.find(c))
{
c = removeIntDir.match(1) + removeIntDir.match(2);
c = removeIntDir.match(1) + removeIntDir.match(3);
}
c = this->ShortPath(c.c_str());
std::string ret = c;
std::string unix = c;
// since the command may already be a windows path, convert it
// to unix so we can use SplitProgramPath on it.
cmSystemTools::ConvertToUnixSlashes(unix);
std::string path, file;
cmSystemTools::SplitProgramPath(unix.c_str(), path, file);
// do a short path on the directory, because ShortPath will
// not work for files that do not exist
path = this->ShortPath(path.c_str());
// now put the two back together
path += "\\";
path += file;
std::string ret = path;
std::string args = reg.match(2);
ret += args;
return ret;