summaryrefslogtreecommitdiff
path: root/Source/cmLocalVisualStudio7Generator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmLocalVisualStudio7Generator.h')
-rw-r--r--Source/cmLocalVisualStudio7Generator.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h
new file mode 100644
index 000000000..9aa408eda
--- /dev/null
+++ b/Source/cmLocalVisualStudio7Generator.h
@@ -0,0 +1,131 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#ifndef cmLocalVisualStudio7Generator_h
+#define cmLocalVisualStudio7Generator_h
+
+#include "cmLocalVisualStudioGenerator.h"
+#include "cmVisualStudioGeneratorOptions.h"
+
+class cmTarget;
+class cmSourceFile;
+class cmCustomCommand;
+class cmSourceGroup;
+
+
+class cmLocalVisualStudio7GeneratorOptions;
+class cmLocalVisualStudio7GeneratorFCInfo;
+class cmLocalVisualStudio7GeneratorInternals;
+
+/** \class cmLocalVisualStudio7Generator
+ * \brief Write Visual Studio .NET project files.
+ *
+ * cmLocalVisualStudio7Generator produces a Visual Studio .NET project
+ * file for each target in its directory.
+ */
+class cmLocalVisualStudio7Generator : public cmLocalVisualStudioGenerator
+{
+public:
+ ///! Set cache only and recurse to false by default.
+ cmLocalVisualStudio7Generator(VSVersion v);
+
+ virtual ~cmLocalVisualStudio7Generator();
+
+ virtual void AddHelperCommands();
+
+ /**
+ * Generate the makefile for this directory.
+ */
+ virtual void Generate();
+
+ enum BuildType {STATIC_LIBRARY, DLL, EXECUTABLE, WIN32_EXECUTABLE, UTILITY};
+
+ /**
+ * Specify the type of the build: static, dll, or executable.
+ */
+ void SetBuildType(BuildType,const char *name);
+
+ void SetPlatformName(const char* n) { this->PlatformName = n;}
+
+ void SetExtraFlagTable(cmVS7FlagTable const* table)
+ { this->ExtraFlagTable = table; }
+ virtual std::string GetTargetDirectory(cmTarget const&) const;
+ cmSourceFile* CreateVCProjBuildRule();
+ void WriteStampFiles();
+ virtual std::string ComputeLongestObjectDirectory(cmTarget&) const;
+
+ virtual void ReadAndStoreExternalGUID(const char* name,
+ const char* path);
+ virtual void AddCMakeListsRules();
+protected:
+ void CreateSingleVCProj(const char *lname, cmTarget &tgt);
+private:
+ typedef cmVisualStudioGeneratorOptions Options;
+ typedef cmLocalVisualStudio7GeneratorFCInfo FCInfo;
+ std::string GetBuildTypeLinkerFlags(std::string rootLinkerFlags,
+ const char* configName);
+ void FixGlobalTargets();
+ void WriteProjectFiles();
+ void WriteVCProjHeader(std::ostream& fout, const char *libName,
+ cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
+ void WriteVCProjFooter(std::ostream& fout, cmTarget &target);
+ void WriteVCProjFile(std::ostream& fout, const char *libName,
+ cmTarget &tgt);
+ void WriteConfigurations(std::ostream& fout,
+ const char *libName, cmTarget &tgt);
+ void WriteConfiguration(std::ostream& fout,
+ const char* configName,
+ const char* libName, cmTarget &tgt);
+ std::string EscapeForXML(const char* s);
+ std::string ConvertToXMLOutputPath(const char* path);
+ std::string ConvertToXMLOutputPathSingle(const char* path);
+ void OutputTargetRules(std::ostream& fout, const char* configName,
+ cmTarget &target, const char *libName);
+ void OutputBuildTool(std::ostream& fout, const char* configName,
+ cmTarget& t, bool debug);
+ void OutputLibraryDirectories(std::ostream& fout,
+ std::vector<std::string> const& dirs);
+ void WriteProjectSCC(std::ostream& fout, cmTarget& target);
+ void WriteProjectStart(std::ostream& fout, const char *libName,
+ cmTarget &tgt, std::vector<cmSourceGroup> &sgs);
+ void WriteProjectStartFortran(std::ostream& fout, const char *libName,
+ cmTarget &tgt);
+ void WriteVCProjBeginGroup(std::ostream& fout,
+ const char* group,
+ const char* filter);
+ void WriteVCProjEndGroup(std::ostream& fout);
+
+ void WriteCustomRule(std::ostream& fout,
+ const char* source,
+ const cmCustomCommand& command,
+ FCInfo& fcinfo);
+ void WriteTargetVersionAttribute(std::ostream& fout, cmTarget& target);
+
+ void WriteGroup(const cmSourceGroup *sg,
+ cmTarget& target, std::ostream &fout,
+ const char *libName, std::vector<std::string> *configs);
+
+ friend class cmLocalVisualStudio7GeneratorFCInfo;
+ friend class cmLocalVisualStudio7GeneratorInternals;
+
+ class EventWriter;
+ friend class EventWriter;
+
+ cmVS7FlagTable const* ExtraFlagTable;
+ std::string ModuleDefinitionFile;
+ bool FortranProject;
+ std::string PlatformName; // Win32 or x64
+ cmLocalVisualStudio7GeneratorInternals* Internal;
+};
+
+
+#endif
+