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

ENH: Extend GG::Build method for pre-parsed args

This adds an argument to the cmGlobalGenerator::Build method to pass a
vector of arguments for the native build tool programatically.
Brad King 16 лет назад
Родитель
Сommit
d35651fb6c
2 измененных файлов с 21 добавлено и 10 удалено
  1. 12 3
      Source/cmGlobalGenerator.cxx
  2. 9 7
      Source/cmGlobalGenerator.h

+ 12 - 3
Source/cmGlobalGenerator.cxx

@@ -1125,7 +1125,8 @@ int cmGlobalGenerator::Build(
   bool clean, bool fast,
   double timeout,
   bool verbose,
-  const char* extraOptions)
+  const char* extraOptions,
+  std::vector<std::string> const& nativeOptions)
 {
   /**
    * Run an executable command and put the stdout in output.
@@ -1194,8 +1195,16 @@ int cmGlobalGenerator::Build(
     *output += makeCommand;
     *output += "\n";
     }
-  
-  if (!cmSystemTools::RunSingleCommand(makeCommand.c_str(), outputPtr,
+
+  std::vector<cmStdString> command =
+    cmSystemTools::ParseArguments(makeCommand.c_str());
+  for(std::vector<std::string>::const_iterator ni = nativeOptions.begin();
+      ni != nativeOptions.end(); ++ni)
+    {
+    command.push_back(*ni);
+    }
+
+  if (!cmSystemTools::RunSingleCommand(command, outputPtr,
                                        &retVal, 0, verbose, timeout))
     {
     cmSystemTools::SetRunCommandHideConsole(hideconsole);

+ 9 - 7
Source/cmGlobalGenerator.h

@@ -100,13 +100,15 @@ public:
    * empty then all is assumed. clean indicates if a "make clean" should be
    * done first.
    */
-  virtual int Build(const char *srcdir, const char *bindir,
-                    const char *projectName, const char *targetName,
-                    std::string *output, 
-                    const char *makeProgram, const char *config,
-                    bool clean, bool fast,
-                    double timeout, bool verbose=false,
-                    const char* extraOptions = 0);
+  int Build(const char *srcdir, const char *bindir,
+            const char *projectName, const char *targetName,
+            std::string *output,
+            const char *makeProgram, const char *config,
+            bool clean, bool fast,
+            double timeout, bool verbose=false,
+            const char* extraOptions = 0,
+            std::vector<std::string> const& nativeOptions =
+            std::vector<std::string>());
   
   virtual std::string GenerateBuildCommand(
     const char* makeProgram,