/*========================================================================= Program: CMake - Cross-Platform Makefile Generator Module: $RCSfile: cmExecuteProcessCommand.h,v $ Language: C++ Date: $Date: 2008-01-23 15:27:59 $ Version: $Revision: 1.6 $ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices 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 const& args, cmExecutionStatus &status); /** * The name of the command as specified in CMakeList.txt. */ virtual const char* GetName() {return "execute_process";} /** * This determines if the command is invoked when in script mode. */ virtual bool IsScriptable() { return true; } /** * Succinct documentation. */ virtual const char* GetTerseDocumentation() { return "Execute one or more child processes."; } /** * More documentation. */ virtual const char* GetFullDocumentation() { return " execute_process(COMMAND [args1...]]\n" " [COMMAND [args2...] [...]]\n" " [WORKING_DIRECTORY ]\n" " [TIMEOUT ]\n" " [RESULT_VARIABLE ]\n" " [OUTPUT_VARIABLE ]\n" " [ERROR_VARIABLE ]\n" " [INPUT_FILE ]\n" " [OUTPUT_FILE ]\n" " [ERROR_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