summaryrefslogtreecommitdiff
path: root/Source/cmExecuteProcessCommand.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmExecuteProcessCommand.h')
-rw-r--r--Source/cmExecuteProcessCommand.h113
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