summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileGenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmMakefileGenerator.h')
-rw-r--r--Source/cmMakefileGenerator.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/Source/cmMakefileGenerator.h b/Source/cmMakefileGenerator.h
index 688d31f..e2da856 100644
--- a/Source/cmMakefileGenerator.h
+++ b/Source/cmMakefileGenerator.h
@@ -55,9 +55,20 @@ class cmClassFile;
class cmMakefileGenerator
{
public:
- /**
- * Set the cmMakefile instance from which to generate the makefile.
- */
+ ///! Create a named generator
+ static cmMakefileGenerator* CreateGenerator(const char* name);
+ ///! Register a generator
+ static void RegisterGenerator(cmMakefileGenerator*);
+ ///! Get the names of the current registered generators
+ static void GetRegisteredGenerators(std::vector<std::string>& names);
+
+ ///! Get the name for the generator.
+ virtual const char* GetName() = 0;
+
+ ///! virtual copy constructor
+ virtual cmMakefileGenerator* CreateObject() = 0;
+
+ ///! Set the cmMakefile instance from which to generate the makefile.
void SetMakefile(cmMakefile*);
/**
@@ -84,6 +95,7 @@ public:
virtual ~cmMakefileGenerator(){};
protected:
+ static std::map<cmStdString, cmMakefileGenerator*> s_RegisteredGenerators;
cmMakefile* m_Makefile;
};