ENH: clean up drive letter check

This commit is contained in:
Bill Hoffman 2001-11-01 10:42:07 -05:00
parent 8e79e498f9
commit 10ae8a4e24
1 changed files with 26 additions and 17 deletions

View File

@ -248,25 +248,34 @@ bool cmCacheManager::LoadCache(const char* path,
"current loaded cache", cmCacheManager::INTERNAL);
}
std::string currentcwd = path;
if ( currentcwd[0] >= 'A' && currentcwd[0] <= 'Z' &&
currentcwd[1] == ':' )
if ( internal && this->GetCacheValue("CMAKE_CACHEFILE_DIR") )
{
currentcwd[0] = currentcwd[0] - 'A' + 'a';
}
cmSystemTools::ConvertToUnixSlashes(currentcwd);
if(internal && this->GetCacheValue("CMAKE_CACHEFILE_DIR") &&
std::string(this->GetCacheValue("CMAKE_CACHEFILE_DIR")) != currentcwd)
{
std::string message =
std::string("The current CMakeCache.txt directory ") +
currentcwd + std::string(" is different than the directory ") +
std::string(this->GetCacheValue("CMAKE_CACHEFILE_DIR")) +
std::string(" where CMackeCache.txt was created. This may result "
"in binaries being created in the wrong place. If you "
"are not sure, reedit the CMakeCache.txt");
cmSystemTools::Error(message.c_str());
std::string currentcwd = path;
std::string oldcwd = this->GetCacheValue("CMAKE_CACHEFILE_DIR");
if ( currentcwd[0] >= 'A' && currentcwd[0] <= 'Z' &&
currentcwd[1] == ':' )
{
currentcwd[0] = currentcwd[0] - 'A' + 'a';
}
if ( oldcwd[0] >= 'A' && oldcwd[0] <= 'Z' &&
oldcwd[1] == ':' )
{
oldcwd[0] = oldcwd[0] - 'A' + 'a';
}
cmSystemTools::ConvertToUnixSlashes(currentcwd);
if(oldcwd != currentcwd)
{
std::string message =
std::string("The current CMakeCache.txt directory ") +
currentcwd + std::string(" is different than the directory ") +
std::string(this->GetCacheValue("CMAKE_CACHEFILE_DIR")) +
std::string(" where CMackeCache.txt was created. This may result "
"in binaries being created in the wrong place. If you "
"are not sure, reedit the CMakeCache.txt");
cmSystemTools::Error(message.c_str());
}
}
return true;
}