summaryrefslogtreecommitdiff
path: root/Source/cmGetFilenameComponentCommand.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGetFilenameComponentCommand.h')
-rw-r--r--Source/cmGetFilenameComponentCommand.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/Source/cmGetFilenameComponentCommand.h b/Source/cmGetFilenameComponentCommand.h
new file mode 100644
index 000000000..0c8e57a26
--- /dev/null
+++ b/Source/cmGetFilenameComponentCommand.h
@@ -0,0 +1,91 @@
+/*============================================================================
+ 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 cmGetFilenameComponentCommand_h
+#define cmGetFilenameComponentCommand_h
+
+#include "cmCommand.h"
+
+/** \class cmGetFilenameComponentCommand
+ * \brief Get a specific component of a filename.
+ *
+ * cmGetFilenameComponentCommand is a utility command used to get the path,
+ * name, extension or name without extension of a full filename.
+ */
+class cmGetFilenameComponentCommand : public cmCommand
+{
+public:
+ /**
+ * This is a virtual constructor for the command.
+ */
+ virtual cmCommand* Clone()
+ {
+ return new cmGetFilenameComponentCommand;
+ }
+
+ /**
+ * 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);
+
+ /**
+ * This determines if the command is invoked when in script mode.
+ */
+ virtual bool IsScriptable() const { return true; }
+
+ /**
+ * The name of the command as specified in CMakeList.txt.
+ */
+ virtual const char* GetName() const { return "get_filename_component";}
+
+ /**
+ * Succinct documentation.
+ */
+ virtual const char* GetTerseDocumentation() const
+ {
+ return "Get a specific component of a full filename.";
+ }
+
+ /**
+ * More documentation.
+ */
+ virtual const char* GetFullDocumentation() const
+ {
+ return
+ " get_filename_component(<VAR> FileName\n"
+ " PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH\n"
+ " [CACHE])\n"
+ "Set <VAR> to be the path (PATH), file name (NAME), file "
+ "extension (EXT), file name without extension (NAME_WE) of FileName, "
+ "the full path (ABSOLUTE), or the full path with all symlinks "
+ "resolved (REALPATH). "
+ "Note that the path is converted to Unix slashes format and has no "
+ "trailing slashes. The longest file extension is always considered. "
+ "If the optional CACHE argument is specified, the result variable is "
+ "added to the cache.\n"
+ " get_filename_component(<VAR> FileName\n"
+ " PROGRAM [PROGRAM_ARGS <ARG_VAR>]\n"
+ " [CACHE])\n"
+ "The program in FileName will be found in the system search path or "
+ "left as a full path. If PROGRAM_ARGS is present with PROGRAM, then "
+ "any command-line arguments present in the FileName string are split "
+ "from the program name and stored in <ARG_VAR>. This is used to "
+ "separate a program name from its arguments in a command line string.";
+ }
+
+ cmTypeMacro(cmGetFilenameComponentCommand, cmCommand);
+};
+
+
+
+#endif