Forráskód Böngészése

fixed bug and modified functionality

Ken Martin 25 éve
szülő
commit
7cde8fd0f4
2 módosított fájl, 25 hozzáadás és 18 törlés
  1. 23 16
      Source/cmFindProgramCommand.cxx
  2. 2 2
      Source/cmFindProgramCommand.h

+ 23 - 16
Source/cmFindProgramCommand.cxx

@@ -40,28 +40,35 @@ bool cmFindProgramCommand::Invoke(std::vector<std::string>& args)
     m_Makefile->AddDefinition(define, cacheValue);
     return true;
     }
+
   // if it is not in the cache, then search the system path
+  // add any user specified paths
   std::vector<std::string> path;
+  for (unsigned int j = 2; j < args.size(); j++)
+    {
+    // expand variables
+    std::string exp = args[j];
+    m_Makefile->ExpandVariablesInString(exp);
+    path.push_back(exp);
+    }
   cmSystemTools::GetPath(path);
-  for(; i != args.end(); ++i)
+
+  for(unsigned int k=0; k < path.size(); k++)
     {
-    for(unsigned int k=0; k < path.size(); k++)
-      {
-      std::string tryPath = path[k];
-      tryPath += "/";
-      tryPath += *i;
+    std::string tryPath = path[k];
+    tryPath += "/";
+    tryPath += *i;
 #ifdef _WIN32
-      tryPath += ".exe";
+    tryPath += ".exe";
 #endif
-      if(cmSystemTools::FileExists(tryPath.c_str()))
-        {
-        // Save the value in the cache
-        cmCacheManager::GetInstance()->AddCacheEntry(define,
-                                                     tryPath.c_str(),
-                                                     cmCacheManager::FILEPATH);
-        m_Makefile->AddDefinition(define, tryPath.c_str());
-        return true;
-        }
+    if(cmSystemTools::FileExists(tryPath.c_str()))
+      {
+      // Save the value in the cache
+      cmCacheManager::GetInstance()->AddCacheEntry(define,
+                                                   tryPath.c_str(),
+                                                   cmCacheManager::FILEPATH);
+      m_Makefile->AddDefinition(define, tryPath.c_str());
+      return true;
       }
     }
   return false;

+ 2 - 2
Source/cmFindProgramCommand.h

@@ -53,7 +53,7 @@ public:
   /**
    * The name of the command as specified in CMakeList.txt.
    */
-  virtual const char* GetName() { return "FIND_PROGRARM";}
+  virtual const char* GetName() { return "FIND_PROGRAM";}
 
   /**
    * Succinct documentation.
@@ -69,7 +69,7 @@ public:
   virtual const char* GetFullDocumentation()
     {
     return
-      "FIND_PROGRAM(NAME executable1 executable2 ...)";
+      "FIND_PROGRAM(NAME executable1 extrapath extrapath ...)";
     }
   
   cmTypeMacro(cmFindProgramCommand, cmCommand);