Ver código fonte

ENH: Added generation of internal CMAKE cache entry with path to command-line CMake executable.

Brad King 25 anos atrás
pai
commit
5e4a89b1b9

+ 15 - 0
Source/CMakeBuildTargets.cxx

@@ -116,6 +116,21 @@ int main(int ac, char** av)
   // Read and parse the input makefile
   mf.MakeStartDirectoriesCurrent();
   cmCacheManager::GetInstance()->LoadCache(&mf);
+  
+  // Make sure the internal "CMAKE" cache entry is set.
+  const char* cacheValue = cmCacheManager::GetInstance()->GetCacheValue("CMAKE");
+  if(!cacheValue)
+    {
+    // Find our own exectuable.
+    std::string cMakeSelf = cmSystemTools::FindProgram(av[0]);
+    // Save the value in the cache
+    cmCacheManager::GetInstance()->AddCacheEntry("CMAKE",
+                                                 cMakeSelf.c_str(),
+                                                 "Path to CMake executable.",
+                                                 cmCacheManager::INTERNAL);
+    }
+  
+  // Transfer the cache into the makefile's definitions.
   cmCacheManager::GetInstance()->DefineCache(&mf);
   if(!mf.ReadListFile(av[1]))
     {

+ 14 - 0
Source/CMakeSetupCMD.cxx

@@ -104,6 +104,20 @@ int main(int ac, char** av)
   makefile.SetMakefileGenerator(pg);
   makefile.MakeStartDirectoriesCurrent();
   cmCacheManager::GetInstance()->LoadCache(&makefile);
+
+  // Make sure the internal "CMAKE" cache entry is set.
+  const char* cacheValue = cmCacheManager::GetInstance()->GetCacheValue("CMAKE");
+  if(!cacheValue)
+    {
+    // Find our own exectuable.
+    std::string cMakeSelf = "\""+cmSystemTools::FindProgram(av[0])+"\"";
+    // Save the value in the cache
+    cmCacheManager::GetInstance()->AddCacheEntry("CMAKE",
+                                                 cMakeSelf.c_str(),
+                                                 "Path to CMake executable.",
+                                                 cmCacheManager::INTERNAL);
+    }
+  
   cmCacheManager::GetInstance()->DefineCache(&makefile);
   makefile.ReadListFile(av[1]);
   makefile.GenerateMakefile();

+ 16 - 1
Source/MFCDialog/CMakeSetupDialog.cpp

@@ -469,7 +469,6 @@ void CMakeSetupDialog::OnChangeWhereBuild()
     {
     m_CacheEntriesList.RemoveAll();
     }
-  
 }
 
 void CMakeSetupDialog::OnChangeWhereSource() 
@@ -483,6 +482,22 @@ void CMakeSetupDialog::LoadCacheFromDiskToGUI()
   if(m_WhereBuild != "")
     {
     cmCacheManager::GetInstance()->LoadCache(m_WhereBuild);
+    
+    // Make sure the internal "CMAKE" cache entry is set.
+    const char* cacheValue = cmCacheManager::GetInstance()->GetCacheValue("CMAKE");
+    if(!cacheValue)
+      {
+	// Find our own exectuable.
+	std::string cMakeCMD = "\""+cmSystemTools::GetProgramPath(_pgmptr);
+	cMakeCMD += "/CMakeSetupCMD.exe\"";
+
+	// Save the value in the cache
+	cmCacheManager::GetInstance()->AddCacheEntry("CMAKE",
+						     cMakeCMD.c_str(),
+						     "Path to CMake executable.",
+						     cmCacheManager::INTERNAL);
+      }
+    
     this->FillCacheGUIFromCacheManager();
     }
 }