114 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*============================================================================
 | |
|   CMake - Cross Platform Makefile Generator
 | |
|   Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
 | |
| 
 | |
|   Distributed under the OSI-approved BSD License (the "License");
 | |
|   see accompanying file Copyright.txt for details.
 | |
| 
 | |
|   This software is distributed WITHOUT ANY WARRANTY; without even the
 | |
|   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
|   See the License for more information.
 | |
| ============================================================================*/
 | |
| #ifndef cmExecuteProcessCommand_h
 | |
| #define cmExecuteProcessCommand_h
 | |
| 
 | |
| #include "cmCommand.h"
 | |
| 
 | |
| /** \class cmExecuteProcessCommand
 | |
|  * \brief Command that adds a target to the build system.
 | |
|  *
 | |
|  * cmExecuteProcessCommand is a CMake language interface to the KWSys
 | |
|  * Process Execution implementation.
 | |
|  */
 | |
| class cmExecuteProcessCommand : public cmCommand
 | |
| {
 | |
| public:
 | |
|   /**
 | |
|    * This is a virtual constructor for the command.
 | |
|    */
 | |
|   virtual cmCommand* Clone()
 | |
|     {
 | |
|     return new cmExecuteProcessCommand;
 | |
|     }
 | |
| 
 | |
|   /**
 | |
|    * This is called when the command is first encountered in
 | |
|    * the CMakeLists.txt file.
 | |
|    */
 | |
|   virtual bool InitialPass(std::vector<std::string> const& args,
 | |
|                            cmExecutionStatus &status);
 | |
| 
 | |
|   /**
 | |
|    * The name of the command as specified in CMakeList.txt.
 | |
|    */
 | |
|   virtual const char* GetName() const
 | |
|     {return "execute_process";}
 | |
| 
 | |
|   /**
 | |
|    * This determines if the command is invoked when in script mode.
 | |
|    */
 | |
|   virtual bool IsScriptable() const { return true; }
 | |
| 
 | |
|   /**
 | |
|    * Succinct documentation.
 | |
|    */
 | |
|   virtual const char* GetTerseDocumentation() const
 | |
|     {
 | |
|     return "Execute one or more child processes.";
 | |
|     }
 | |
| 
 | |
|   /**
 | |
|    * More documentation.
 | |
|    */
 | |
|   virtual const char* GetFullDocumentation() const
 | |
|     {
 | |
|     return
 | |
|       "  execute_process(COMMAND <cmd1> [args1...]]\n"
 | |
|       "                  [COMMAND <cmd2> [args2...] [...]]\n"
 | |
|       "                  [WORKING_DIRECTORY <directory>]\n"
 | |
|       "                  [TIMEOUT <seconds>]\n"
 | |
|       "                  [RESULT_VARIABLE <variable>]\n"
 | |
|       "                  [OUTPUT_VARIABLE <variable>]\n"
 | |
|       "                  [ERROR_VARIABLE <variable>]\n"
 | |
|       "                  [INPUT_FILE <file>]\n"
 | |
|       "                  [OUTPUT_FILE <file>]\n"
 | |
|       "                  [ERROR_FILE <file>]\n"
 | |
|       "                  [OUTPUT_QUIET]\n"
 | |
|       "                  [ERROR_QUIET]\n"
 | |
|       "                  [OUTPUT_STRIP_TRAILING_WHITESPACE]\n"
 | |
|       "                  [ERROR_STRIP_TRAILING_WHITESPACE])\n"
 | |
|       "Runs the given sequence of one or more commands with the standard "
 | |
|       "output of each process piped to the standard input of the next.  "
 | |
|       "A single standard error pipe is used for all processes.  "
 | |
|       "If WORKING_DIRECTORY is given the named directory will be set as "
 | |
|       "the current working directory of the child processes.  "
 | |
|       "If TIMEOUT is given the child processes will be terminated if they "
 | |
|       "do not finish in the specified number of seconds "
 | |
|       "(fractions are allowed).  "
 | |
|       "If RESULT_VARIABLE is given the variable will be set to contain "
 | |
|       "the result of running the processes.  This will be an integer return "
 | |
|       "code from the last child or a string describing an error condition.  "
 | |
|       "If OUTPUT_VARIABLE or ERROR_VARIABLE are given the variable named "
 | |
|       "will be set with the contents of the standard output and standard "
 | |
|       "error pipes respectively.  If the same variable is named for both "
 | |
|       "pipes their output will be merged in the order produced.  "
 | |
|       "If INPUT_FILE, OUTPUT_FILE, or ERROR_FILE is given the file named "
 | |
|       "will be attached to the standard input of the first process, "
 | |
|       "standard output of the last process, or standard error of all "
 | |
|       "processes respectively.  "
 | |
|       "If OUTPUT_QUIET or ERROR_QUIET is given then the standard output "
 | |
|       "or standard error results will be quietly ignored.  "
 | |
|       "If more than one OUTPUT_* or ERROR_* option is given for the same "
 | |
|       "pipe the precedence is not specified.  "
 | |
|       "If no OUTPUT_* or ERROR_* options are given the output will be shared "
 | |
|       "with the corresponding pipes of the CMake process itself.\n"
 | |
|       "The execute_process command is a newer more powerful version of "
 | |
|       "exec_program, but the old command has been kept for compatibility."
 | |
|       ;
 | |
|     }
 | |
| 
 | |
|   cmTypeMacro(cmExecuteProcessCommand, cmCommand);
 | |
| };
 | |
| 
 | |
| #endif
 |