diff options
author | Brad King <brad.king@kitware.com> | 2003-12-08 16:31:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2003-12-08 16:31:16 (GMT) |
commit | 306fc9ea96d56a795b52f04d31ac3f7c800839a3 (patch) | |
tree | 60bf234493620a6863c358e8373c26f02068113e /Source | |
parent | 403f220d25b99ccdf0ceef87ef5f669a047d31cd (diff) | |
download | CMake-306fc9ea96d56a795b52f04d31ac3f7c800839a3.zip CMake-306fc9ea96d56a795b52f04d31ac3f7c800839a3.tar.gz CMake-306fc9ea96d56a795b52f04d31ac3f7c800839a3.tar.bz2 |
ENH: Improved error messages when source tree does not have a CMakeLists.txt file. No matter how many cases we check, there always seems to be a user that finds a case that gives a confusing error message...
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmake.cxx | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 1202835..133d71d 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -392,7 +392,24 @@ void cmake::SetDirectoriesFromFile(const char* arg) listPath = cmSystemTools::GetFilenamePath(fullPath.c_str()); } } - + else + { + // Specified file or directory does not exist. Try to set things + // up to produce a meaningful error message. + std::string fullPath = cmSystemTools::CollapseFullPath(arg); + std::string name = cmSystemTools::GetFilenameName(fullPath.c_str()); + name = cmSystemTools::LowerCase(name); + if(name == "cmakecache.txt" || name == "cmakelists.txt") + { + argIsFile = true; + listPath = cmSystemTools::GetFilenamePath(fullPath.c_str()); + } + else + { + listPath = fullPath; + } + } + // If there is a CMakeCache.txt file, use its settings. if(cachePath.length() > 0) { @@ -880,9 +897,22 @@ int cmake::DoPreConfigureChecks() if(!cmSystemTools::FileExists(srcList.c_str())) { cmOStringStream err; - err << "The source directory \"" << this->GetHomeDirectory() - << "\" does not appear to contain CMakeLists.txt.\n" - << "Specify --help for usage, or press the help button on the CMake GUI."; + if(cmSystemTools::FileIsDirectory(this->GetHomeDirectory())) + { + err << "The source directory \"" << this->GetHomeDirectory() + << "\" does not appear to contain CMakeLists.txt.\n"; + } + else if(cmSystemTools::FileExists(this->GetHomeDirectory())) + { + err << "The source directory \"" << this->GetHomeDirectory() + << "\" is a file, not a directory.\n"; + } + else + { + err << "The source directory \"" << this->GetHomeDirectory() + << "\" does not exist.\n"; + } + err << "Specify --help for usage, or press the help button on the CMake GUI."; cmSystemTools::Error(err.str().c_str()); return -2; } |