| /*============================================================================ |
| 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 |