diff options
author | Brad King <brad.king@kitware.com> | 2009-07-29 15:29:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-07-29 15:29:08 (GMT) |
commit | 5b85a581a88a56aed7ed7e16637b9d349629bdcf (patch) | |
tree | d47f0321096777a9cb752a8330c01ba01336209d /Source/cmIDEOptions.h | |
parent | e339f3133fdc712e71a1bd45bdf051baa2fe6fdb (diff) | |
download | CMake-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.h | 64 |
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 |