ENH: Separate VS flag table type

Move the cmVS7FlagTable type out of the VS generators and rename it to
cmIDEFlagTable.  It will be useful for other generators.
This commit is contained in:
Brad King 2009-07-29 11:28:55 -04:00
parent 819b0742c6
commit e339f3133f
8 changed files with 56 additions and 31 deletions

View File

@ -295,6 +295,7 @@ IF (WIN32)
cmGlobalVisualStudioGenerator.cxx
cmGlobalVisualStudioGenerator.h
cmGlobalWatcomWMakeGenerator.cxx
cmIDEFlagTable.h
cmLocalVisualStudio6Generator.cxx
cmLocalVisualStudio6Generator.h
cmLocalVisualStudio7Generator.cxx

View File

@ -716,7 +716,7 @@ static cmVS7FlagTable cmVS7ExtraFlagTable[] =
{0,0,0,0,0}
};
cmVS7FlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7()
cmIDEFlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7()
{
return cmVS7ExtraFlagTable;
}

View File

@ -20,7 +20,7 @@
#include "cmGlobalVisualStudioGenerator.h"
class cmTarget;
struct cmVS7FlagTable;
struct cmIDEFlagTable;
/** \class cmGlobalVisualStudio7Generator
* \brief Write a Unix makefiles.
@ -103,7 +103,7 @@ public:
};
protected:
static cmVS7FlagTable const* GetExtraFlagTableVS7();
static cmIDEFlagTable const* GetExtraFlagTableVS7();
virtual void OutputSLNFile(cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators);
virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,

View File

@ -348,7 +348,7 @@ static cmVS7FlagTable cmVS8ExtraFlagTable[] =
{0,0,0,0,0}
};
cmVS7FlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8()
cmIDEFlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8()
{
return cmVS8ExtraFlagTable;
}

View File

@ -67,7 +67,7 @@ protected:
virtual bool VSLinksDependencies() const { return false; }
static cmVS7FlagTable const* GetExtraFlagTableVS8();
static cmIDEFlagTable const* GetExtraFlagTableVS8();
virtual void AddPlatformDefinitions(cmMakefile* mf);
virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,
std::vector<cmLocalGenerator*>& generators);

45
Source/cmIDEFlagTable.h Normal file
View File

@ -0,0 +1,45 @@
/*=========================================================================
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 cmIDEFlagTable_h
#define cmIDEFlagTable_h
// This is a table mapping XML tag IDE names to command line options
struct cmIDEFlagTable
{
const char* IDEName; // name used in the IDE xml file
const char* commandFlag; // command line flag
const char* comment; // comment
const char* value; // string value
unsigned int special; // flags for special handling requests
enum
{
UserValue = (1<<0), // flag contains a user-specified value
UserIgnored = (1<<1), // ignore any user value
UserRequired = (1<<2), // match only when user value is non-empty
Continue = (1<<3), // continue looking for matching entries
SemicolonAppendable = (1<<4), // a flag that if specified multiple times
// should have its value appended to the
// old value with semicolons (e.g.
// /NODEFAULTLIB: =>
// IgnoreDefaultLibraryNames)
UserValueIgnored = UserValue | UserIgnored,
UserValueRequired = UserValue | UserRequired
};
};
#endif

View File

@ -18,7 +18,7 @@
#define cmLocalVisualStudio7Generator_h
#include "cmLocalVisualStudioGenerator.h"
#include "cmVisualStudioGeneratorOptions.h" // to get cmVS7FlagTable
#include "cmVisualStudioGeneratorOptions.h"
class cmTarget;
class cmSourceFile;

View File

@ -18,33 +18,12 @@
#define cmVisualStudioGeneratorOptions_h
#include "cmLocalGenerator.h"
#include "cmIDEFlagTable.h"
typedef cmIDEFlagTable cmVS7FlagTable;
class cmVisualStudio10TargetGenerator;
// This is a table mapping XML tag IDE names to command line options
struct cmVS7FlagTable
{
const char* IDEName; // name used in the IDE xml file
const char* commandFlag; // command line flag
const char* comment; // comment
const char* value; // string value
unsigned int special; // flags for special handling requests
enum
{
UserValue = (1<<0), // flag contains a user-specified value
UserIgnored = (1<<1), // ignore any user value
UserRequired = (1<<2), // match only when user value is non-empty
Continue = (1<<3), // continue looking for matching entries
SemicolonAppendable = (1<<4), // a flag that if specified multiple times
// should have its value appended to the
// old value with semicolons (e.g.
// /NODEFAULTLIB: =>
// IgnoreDefaultLibraryNames)
UserValueIgnored = UserValue | UserIgnored,
UserValueRequired = UserValue | UserRequired
};
};
//----------------------------------------------------------------------------
class cmVisualStudioGeneratorOptions
{