summaryrefslogtreecommitdiffstats
path: root/Source/cmUnsetCommand.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-08-25 14:31:29 (GMT)
committerBrad King <brad.king@kitware.com>2008-08-25 14:31:29 (GMT)
commit33e865c041d95e383ce7e843a1a785cda78d13b7 (patch)
tree1d4f8014232a0ce4f6446123f472de6dc0d52751 /Source/cmUnsetCommand.h
parent04fc897536fea61b548f06c21efca55db755a7e2 (diff)
downloadCMake-33e865c041d95e383ce7e843a1a785cda78d13b7.zip
CMake-33e865c041d95e383ce7e843a1a785cda78d13b7.tar.gz
CMake-33e865c041d95e383ce7e843a1a785cda78d13b7.tar.bz2
ENH: Add unset() command.
This introduces the unset() command to make it easy to unset CMake variables, environment variables, and CMake cache variables. Previously it was not even possible to unset ENV or CACHE variables (as in completely remove them). Changes based on patch from Philip Lowman. See issue #7507.
Diffstat (limited to 'Source/cmUnsetCommand.h')
-rw-r--r--Source/cmUnsetCommand.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/Source/cmUnsetCommand.h b/Source/cmUnsetCommand.h
new file mode 100644
index 0000000..d125a18
--- /dev/null
+++ b/Source/cmUnsetCommand.h
@@ -0,0 +1,84 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ 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 cmUnsetCommand_h
+#define cmUnsetCommand_h
+
+#include "cmCommand.h"
+
+/** \class cmUnsetCommand
+ * \brief Unset a CMAKE variable
+ *
+ * cmUnsetCommand unsets or removes a variable.
+ */
+class cmUnsetCommand : public cmCommand
+{
+public:
+ /**
+ * This is a virtual constructor for the command.
+ */
+ virtual cmCommand* Clone()
+ {
+ return new cmUnsetCommand;
+ }
+
+ /**
+ * 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() { return true; }
+
+ /**
+ * The name of the command as specified in CMakeList.txt.
+ */
+ virtual const char* GetName() {return "unset";}
+
+ /**
+ * Succinct documentation.
+ */
+ virtual const char* GetTerseDocumentation()
+ {
+ return "Unset a variable, cache variable, or environment variable.";
+ }
+
+ /**
+ * More documentation.
+ */
+ virtual const char* GetFullDocumentation()
+ {
+ return
+ " unset(<variable> [CACHE])\n"
+ "Removes the specified variable causing it to become undefined. "
+ "If CACHE is present then the variable is removed from the cache "
+ "instead of the current scope.\n"
+ "<variable> can be an environment variable such as:\n"
+ " unset(ENV{LD_LIBRARY_PATH})\n"
+ "in which case the variable will be removed from the current "
+ "environment.";
+ }
+
+ cmTypeMacro(cmUnsetCommand, cmCommand);
+};
+
+
+
+#endif