Просмотр исходного кода

BUG: Fixed crash of cmake -i when CMAKE_ROOT cannot be found. Made resulting error message cleaner.

Brad King 22 лет назад
Родитель
Сommit
41445f67ac
4 измененных файлов с 17 добавлено и 9 удалено
  1. 8 3
      Source/cmake.cxx
  2. 1 2
      Source/cmakemain.cxx
  3. 7 3
      Source/cmakewizard.cxx
  4. 1 1
      Source/cmakewizard.h

+ 8 - 3
Source/cmake.cxx

@@ -544,9 +544,10 @@ int cmake::AddCMakePaths(const char *arg0)
   if (!cmSystemTools::FileExists(modules.c_str()))
     {
     // couldn't find modules
-    cmSystemTools::Error("Could not find CMAKE_ROOT !!!\n", 
-                         "Modules directory not in directory:\n",
-                         modules.c_str());
+    cmSystemTools::Error("Could not find CMAKE_ROOT !!!\n"
+                         "CMake has most likely not been installed correctly.\n"
+                         "Modules directory not found in\n",
+                         cMakeRoot.c_str());
     return 0;
     }
   this->m_CacheManager->AddCacheEntry
@@ -1058,6 +1059,10 @@ int cmake::Run(const std::vector<std::string>& args, bool noconfigure)
 
 int cmake::Generate()
 {
+  if(!m_GlobalGenerator)
+    {
+    return -1;
+    }
   m_GlobalGenerator->Generate();
   if(cmSystemTools::GetErrorOccuredFlag())
     {

+ 1 - 2
Source/cmakemain.cxx

@@ -196,8 +196,7 @@ int do_cmake(int ac, char** av)
   if (wiz)
     {
     cmakewizard wizard;
-    wizard.RunWizard(args); 
-    return 0;
+    return wizard.RunWizard(args); 
     }
   cmake cm;  
   cm.SetProgressCallback(updateProgress, 0);

+ 7 - 3
Source/cmakewizard.cxx

@@ -89,7 +89,7 @@ void cmakewizard::ShowMessage(const char* m)
 
 
 
-void cmakewizard::RunWizard(std::vector<std::string> const& args)
+int cmakewizard::RunWizard(std::vector<std::string> const& args)
 {
   m_ShowAdvanced = this->AskAdvanced();
   cmSystemTools::DisableRunCommandOutput();
@@ -148,6 +148,10 @@ void cmakewizard::RunWizard(std::vector<std::string> const& args)
     cachem->SaveCache(make.GetHomeOutputDirectory());
     }
   while(asked);
-  make.Generate();
-  this->ShowMessage("CMake complete, run make to build project.\n");
+  if(make.Generate() == 0)
+    {
+    this->ShowMessage("CMake complete, run make to build project.\n");
+    return 0;
+    }
+  return 1;
 }

+ 1 - 1
Source/cmakewizard.h

@@ -38,7 +38,7 @@ public:
    *  Run cmake in wizard mode.  This will coninue to ask the user questions 
    *  until there are no more entries in the cache.
    */
-  void RunWizard(std::vector<std::string>const& args);
+  int RunWizard(std::vector<std::string>const& args);
   
 private:
   bool m_ShowAdvanced;