summaryrefslogtreecommitdiff
path: root/Source/cmVisualStudio10TargetGenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.h')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h
new file mode 100644
index 000000000..2d5ec2a6b
--- /dev/null
+++ b/Source/cmVisualStudio10TargetGenerator.h
@@ -0,0 +1,114 @@
+/*============================================================================
+ 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 cmVisualStudioTargetGenerator_h
+#define cmVisualStudioTargetGenerator_h
+#include "cmStandardIncludes.h"
+
+class cmTarget;
+class cmMakefile;
+class cmGeneratorTarget;
+class cmGeneratedFileStream;
+class cmGlobalVisualStudio10Generator;
+class cmSourceFile;
+class cmCustomCommand;
+class cmLocalVisualStudio7Generator;
+class cmComputeLinkInformation;
+class cmVisualStudioGeneratorOptions;
+#include "cmSourceGroup.h"
+
+class cmVisualStudio10TargetGenerator
+{
+public:
+ cmVisualStudio10TargetGenerator(cmTarget* target,
+ cmGlobalVisualStudio10Generator* gg);
+ ~cmVisualStudio10TargetGenerator();
+ void Generate();
+ // used by cmVisualStudioGeneratorOptions
+ void WritePlatformConfigTag(
+ const char* tag,
+ const char* config,
+ int indentLevel,
+ const char* attribute = 0,
+ const char* end = 0,
+ std::ostream* strm = 0
+ );
+
+private:
+ struct ToolSource
+ {
+ cmSourceFile* SourceFile;
+ bool RelativePath;
+ };
+ struct ToolSources: public std::vector<ToolSource> {};
+
+ std::string ConvertPath(std::string const& path, bool forceRelative);
+ void ConvertToWindowsSlash(std::string& s);
+ void WriteString(const char* line, int indentLevel);
+ void WriteProjectConfigurations();
+ void WriteProjectConfigurationValues();
+ void WriteSource(const char* tool, cmSourceFile* sf, const char* end = 0);
+ void WriteSources(const char* tool, std::vector<cmSourceFile*> const&);
+ void WriteAllSources();
+ void WriteDotNetReferences();
+ void WriteWinRTReferences();
+ void WritePathAndIncrementalLinkOptions();
+ void WriteItemDefinitionGroups();
+ bool ComputeClOptions();
+ bool ComputeClOptions(std::string const& configName);
+ void WriteClOptions(std::string const& config,
+ std::vector<std::string> const & includes);
+ void WriteRCOptions(std::string const& config,
+ std::vector<std::string> const & includes);
+ void WriteLinkOptions(std::string const& config);
+ void WriteMidlOptions(std::string const& config,
+ std::vector<std::string> const & includes);
+ void OutputIncludes(std::vector<std::string> const & includes);
+ void OutputLinkIncremental(std::string const& configName);
+ void WriteCustomRule(cmSourceFile* source,
+ cmCustomCommand const & command);
+ void WriteCustomCommands();
+ void WriteCustomCommand(cmSourceFile* sf);
+ void WriteGroups();
+ void WriteProjectReferences();
+ bool OutputSourceSpecificFlags(cmSourceFile* source);
+ void AddLibraries(cmComputeLinkInformation& cli, std::string& libstring);
+ void WriteLibOptions(std::string const& config);
+ void WriteEvents(std::string const& configName);
+ void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
+ std::string const& configName);
+ void WriteGroupSources(const char* name, ToolSources const& sources,
+ std::vector<cmSourceGroup>& );
+ void AddMissingSourceGroups(std::set<cmSourceGroup*>& groupsUsed,
+ const std::vector<cmSourceGroup>& allGroups);
+
+
+private:
+ typedef cmVisualStudioGeneratorOptions Options;
+ typedef std::map<cmStdString, Options*> OptionsMap;
+ OptionsMap ClOptions;
+ std::string PathToVcxproj;
+ cmTarget* Target;
+ cmGeneratorTarget* GeneratorTarget;
+ cmMakefile* Makefile;
+ std::string Platform;
+ std::string GUID;
+ std::string Name;
+ cmGlobalVisualStudio10Generator* GlobalGenerator;
+ cmGeneratedFileStream* BuildFileStream;
+ cmLocalVisualStudio7Generator* LocalGenerator;
+ std::set<cmSourceFile*> SourcesVisited;
+
+ typedef std::map<cmStdString, ToolSources> ToolSourceMap;
+ ToolSourceMap Tools;
+};
+
+#endif