diff options
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.h')
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.h | 178 |
1 files changed, 129 insertions, 49 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 9a480a87f..61066158c 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -1,119 +1,199 @@ -/*============================================================================ - 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. -============================================================================*/ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmVisualStudioTargetGenerator_h #define cmVisualStudioTargetGenerator_h -#include "cmStandardIncludes.h" -class cmTarget; -class cmMakefile; -class cmGeneratorTarget; +#include "cmConfigure.h" + +#include <iosfwd> +#include <map> +#include <set> +#include <string> +#include <vector> + +class cmComputeLinkInformation; +class cmCustomCommand; class cmGeneratedFileStream; +class cmGeneratorTarget; class cmGlobalVisualStudio10Generator; -class cmSourceFile; -class cmCustomCommand; class cmLocalVisualStudio7Generator; -class cmComputeLinkInformation; +class cmMakefile; +class cmSourceFile; +class cmSourceGroup; class cmVisualStudioGeneratorOptions; -#include "cmSourceGroup.h" class cmVisualStudio10TargetGenerator { public: - cmVisualStudio10TargetGenerator(cmTarget* target, + cmVisualStudio10TargetGenerator(cmGeneratorTarget* 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 - ); + void WritePlatformConfigTag(const char* tag, const std::string& config, + int indentLevel, const char* attribute = 0, + const char* end = 0, std::ostream* strm = 0); private: struct ToolSource { - cmSourceFile* SourceFile; + cmSourceFile const* SourceFile; bool RelativePath; }; - struct ToolSources: public std::vector<ToolSource> {}; + struct ToolSources : public std::vector<ToolSource> + { + }; + + struct TargetsFileAndConfigs + { + std::string File; + std::vector<std::string> Configs; + }; std::string ConvertPath(std::string const& path, bool forceRelative); - void ConvertToWindowsSlash(std::string& s); + static 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 WriteMSToolConfigurationValues(std::string const& config); + void WriteMSToolConfigurationValuesManaged(std::string const& config); + void WriteHeaderSource(cmSourceFile const* sf); + void WriteExtraSource(cmSourceFile const* sf); + void WriteNsightTegraConfigurationValues(std::string const& config); + void WriteSource(std::string const& tool, cmSourceFile const* sf, + const char* end = 0); + void WriteExcludeFromBuild(std::vector<size_t> const& exclude_configs); void WriteAllSources(); void WriteDotNetReferences(); + void WriteDotNetReference(std::string const& ref, std::string const& hint); void WriteEmbeddedResourceGroup(); void WriteWinRTReferences(); + void WriteWinRTPackageCertificateKeyFile(); + void WriteXamlFilesGroup(); void WritePathAndIncrementalLinkOptions(); void WriteItemDefinitionGroups(); + void VerifyNecessaryFiles(); + void WriteMissingFiles(); + void WriteMissingFilesWP80(); + void WriteMissingFilesWP81(); + void WriteMissingFilesWS80(); + void WriteMissingFilesWS81(); + void WriteMissingFilesWS10_0(); + void WritePlatformExtensions(); + void WriteSinglePlatformExtension(std::string const& extension, + std::string const& version); + void WriteSDKReferences(); + void WriteSingleSDKReference(std::string const& extension, + std::string const& version); + void WriteCommonMissingFiles(const std::string& manifestFile); + void WriteTargetSpecificReferences(); + void WriteTargetsFileReferences(); bool ComputeClOptions(); bool ComputeClOptions(std::string const& configName); void WriteClOptions(std::string const& config, - std::vector<std::string> const & includes); + std::vector<std::string> const& includes); + bool ComputeRcOptions(); + bool ComputeRcOptions(std::string const& config); void WriteRCOptions(std::string const& config, - std::vector<std::string> const & includes); + std::vector<std::string> const& includes); + bool ComputeCudaOptions(); + bool ComputeCudaOptions(std::string const& config); + void WriteCudaOptions(std::string const& config, + std::vector<std::string> const& includes); + + bool ComputeCudaLinkOptions(); + bool ComputeCudaLinkOptions(std::string const& config); + void WriteCudaLinkOptions(std::string const& config); + + bool ComputeMasmOptions(); + bool ComputeMasmOptions(std::string const& config); + void WriteMasmOptions(std::string const& config, + std::vector<std::string> const& includes); + bool ComputeNasmOptions(); + bool ComputeNasmOptions(std::string const& config); + void WriteNasmOptions(std::string const& config, + std::vector<std::string> includes); + bool ComputeLinkOptions(); bool ComputeLinkOptions(std::string const& config); + bool ComputeLibOptions(); + bool ComputeLibOptions(std::string const& config); 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); + std::vector<std::string> const& includes); + void WriteAntBuildOptions(std::string const& config); void OutputLinkIncremental(std::string const& configName); - void WriteCustomRule(cmSourceFile* source, - cmCustomCommand const & command); + void WriteCustomRule(cmSourceFile const* source, + cmCustomCommand const& command); void WriteCustomCommands(); - void WriteCustomCommand(cmSourceFile* sf); + void WriteCustomCommand(cmSourceFile const* sf); void WriteGroups(); void WriteProjectReferences(); - bool OutputSourceSpecificFlags(cmSourceFile* source); - void AddLibraries(cmComputeLinkInformation& cli, std::string& libstring); + void WriteApplicationTypeSettings(); + bool OutputSourceSpecificFlags(cmSourceFile const* source); + void AddLibraries(cmComputeLinkInformation& cli, + std::vector<std::string>& libVec, + std::vector<std::string>& vsTargetVec); + void AddTargetsFileAndConfigPair(std::string const& targetsFile, + std::string const& config); void WriteLibOptions(std::string const& config); + void WriteManifestOptions(std::string const& config); void WriteEvents(std::string const& configName); - void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands, + void WriteEvent(const char* name, + std::vector<cmCustomCommand> const& commands, std::string const& configName); void WriteGroupSources(const char* name, ToolSources const& sources, - std::vector<cmSourceGroup>& ); + std::vector<cmSourceGroup>&); void AddMissingSourceGroups(std::set<cmSourceGroup*>& groupsUsed, const std::vector<cmSourceGroup>& allGroups); bool IsResxHeader(const std::string& headerFile); + bool IsXamlHeader(const std::string& headerFile); + bool IsXamlSource(const std::string& headerFile); + + bool ForceOld(const std::string& source) const; private: typedef cmVisualStudioGeneratorOptions Options; - typedef std::map<cmStdString, Options*> OptionsMap; + typedef std::map<std::string, Options*> OptionsMap; OptionsMap ClOptions; + OptionsMap RcOptions; + OptionsMap CudaOptions; + OptionsMap CudaLinkOptions; + OptionsMap MasmOptions; + OptionsMap NasmOptions; OptionsMap LinkOptions; - std::string PathToVcxproj; - cmTarget* Target; + std::string PathToProjectFile; + std::string ProjectFileExtension; + enum VsProjectType + { + vcxproj, + csproj + } ProjectType; + bool InSourceBuild; + std::vector<std::string> Configurations; + std::vector<TargetsFileAndConfigs> TargetsFileAndConfigsVec; cmGeneratorTarget* GeneratorTarget; cmMakefile* Makefile; std::string Platform; std::string GUID; std::string Name; + bool MSTools; + bool Managed; + bool NsightTegra; + int NsightTegraVersion[4]; + bool TargetCompileAsWinRT; cmGlobalVisualStudio10Generator* GlobalGenerator; cmGeneratedFileStream* BuildFileStream; cmLocalVisualStudio7Generator* LocalGenerator; - std::set<cmSourceFile*> SourcesVisited; + std::set<cmSourceFile const*> SourcesVisited; + bool IsMissingFiles; + std::vector<std::string> AddedFiles; + std::string DefaultArtifactDir; - typedef std::map<cmStdString, ToolSources> ToolSourceMap; + typedef std::map<std::string, ToolSources> ToolSourceMap; ToolSourceMap Tools; + std::string GetCMakeFilePath(const char* name) const; }; #endif |