diff options
Diffstat (limited to 'Source/cmExecuteProcessCommand.h')
-rw-r--r-- | Source/cmExecuteProcessCommand.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/Source/cmExecuteProcessCommand.h b/Source/cmExecuteProcessCommand.h new file mode 100644 index 000000000..0e20a4b19 --- /dev/null +++ b/Source/cmExecuteProcessCommand.h @@ -0,0 +1,113 @@ +/*============================================================================ + 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 |