summaryrefslogtreecommitdiffstats
path: root/Source/cmIDEOptions.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-07-29 15:29:08 (GMT)
committerBrad King <brad.king@kitware.com>2009-07-29 15:29:08 (GMT)
commit5b85a581a88a56aed7ed7e16637b9d349629bdcf (patch)
treed47f0321096777a9cb752a8330c01ba01336209d /Source/cmIDEOptions.h
parente339f3133fdc712e71a1bd45bdf051baa2fe6fdb (diff)
downloadCMake-5b85a581a88a56aed7ed7e16637b9d349629bdcf.zip
CMake-5b85a581a88a56aed7ed7e16637b9d349629bdcf.tar.gz
CMake-5b85a581a88a56aed7ed7e16637b9d349629bdcf.tar.bz2
ENH: Separate option mapping from VS generators
Split cmVisualStudioGeneratorOptions core functionality out into a base class cmIDEOptions. It will be useful for other generators.
Diffstat (limited to 'Source/cmIDEOptions.h')
-rw-r--r--Source/cmIDEOptions.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h
new file mode 100644
index 0000000..adf6c38
--- /dev/null
+++ b/Source/cmIDEOptions.h
@@ -0,0 +1,64 @@
+/*=========================================================================
+
+ 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 cmIDEOptions_h
+#define cmIDEOptions_h
+
+#include "cmStandardIncludes.h"
+#include "cmIDEFlagTable.h"
+
+/** \class cmIDEOptions
+ * \brief Superclass for IDE option processing
+ */
+class cmIDEOptions
+{
+public:
+ cmIDEOptions();
+ virtual ~cmIDEOptions();
+
+ // Store definitions and flags.
+ void AddDefine(const std::string& define);
+ void AddDefines(const char* defines);
+ void AddFlag(const char* flag, const char* value);
+
+protected:
+ // create a map of xml tags to the values they should have in the output
+ // for example, "BufferSecurityCheck" = "TRUE"
+ // first fill this table with the values for the configuration
+ // Debug, Release, etc,
+ // Then parse the command line flags specified in CMAKE_CXX_FLAGS
+ // and CMAKE_C_FLAGS
+ // and overwrite or add new values to this map
+ std::map<cmStdString, cmStdString> FlagMap;
+
+ // Preprocessor definitions.
+ std::vector<std::string> Defines;
+
+ // Unrecognized flags that get no special handling.
+ cmStdString FlagString;
+
+ bool DoingDefine;
+ bool AllowDefine;
+ bool AllowSlash;
+ enum { FlagTableCount = 16 };
+ cmIDEFlagTable const* FlagTable[FlagTableCount];
+ void HandleFlag(const char* flag);
+ bool CheckFlagTable(cmIDEFlagTable const* table, const char* flag,
+ bool& flag_handled);
+ virtual void StoreUnknownFlag(const char* flag) = 0;
+};
+
+#endif