123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /* 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 "cmConfigure.h" // IWYU pragma: keep
- #include <iosfwd>
- #include <map>
- #include <memory>
- #include <set>
- #include <string>
- #include <vector>
- class cmComputeLinkInformation;
- class cmCustomCommand;
- class cmGeneratedFileStream;
- class cmGeneratorTarget;
- class cmGlobalVisualStudio10Generator;
- class cmLocalVisualStudio7Generator;
- class cmMakefile;
- class cmSourceFile;
- class cmSourceGroup;
- class cmVisualStudioGeneratorOptions;
- class cmVisualStudio10TargetGenerator
- {
- CM_DISABLE_COPY(cmVisualStudio10TargetGenerator)
- public:
- cmVisualStudio10TargetGenerator(cmGeneratorTarget* target,
- cmGlobalVisualStudio10Generator* gg);
- ~cmVisualStudio10TargetGenerator();
- void Generate();
- // used by cmVisualStudioGeneratorOptions
- 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 const* SourceFile;
- bool RelativePath;
- };
- 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 WriteString(const char* line, int indentLevel);
- void WriteProjectConfigurations();
- void WriteProjectConfigurationValues();
- 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 WriteDotNetReferenceCustomTags(std::string const& ref);
- 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();
- std::vector<std::string> GetIncludes(std::string const& config,
- std::string const& lang) const;
- bool ComputeClOptions();
- bool ComputeClOptions(std::string const& configName);
- void WriteClOptions(std::string const& config);
- bool ComputeRcOptions();
- bool ComputeRcOptions(std::string const& config);
- void WriteRCOptions(std::string const& config);
- bool ComputeCudaOptions();
- bool ComputeCudaOptions(std::string const& config);
- void WriteCudaOptions(std::string const& config);
- 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);
- bool ComputeNasmOptions();
- bool ComputeNasmOptions(std::string const& config);
- void WriteNasmOptions(std::string const& config);
- 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);
- void WriteAntBuildOptions(std::string const& config);
- void OutputLinkIncremental(std::string const& configName);
- void WriteCustomRule(cmSourceFile const* source,
- cmCustomCommand const& command);
- void WriteCustomRuleCpp(std::string const& config, std::string const& script,
- std::string const& inputs,
- std::string const& outputs,
- std::string const& comment);
- void WriteCustomRuleCSharp(std::string const& config,
- std::string const& commandName,
- std::string const& script,
- std::string const& inputs,
- std::string const& outputs,
- std::string const& comment);
- void WriteCustomCommands();
- void WriteCustomCommand(cmSourceFile const* sf);
- void WriteGroups();
- void WriteProjectReferences();
- 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> const& 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);
- 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;
- void GetCSharpSourceProperties(cmSourceFile const* sf,
- std::map<std::string, std::string>& tags);
- void WriteCSharpSourceProperties(
- const std::map<std::string, std::string>& tags);
- void GetCSharpSourceLink(cmSourceFile const* sf, std::string& link);
- private:
- typedef cmVisualStudioGeneratorOptions Options;
- typedef std::map<std::string, std::unique_ptr<Options>> OptionsMap;
- OptionsMap ClOptions;
- OptionsMap RcOptions;
- OptionsMap CudaOptions;
- OptionsMap CudaLinkOptions;
- OptionsMap MasmOptions;
- OptionsMap NasmOptions;
- OptionsMap LinkOptions;
- std::string LangForClCompile;
- 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 const*> SourcesVisited;
- std::set<std::string> CSharpCustomCommandNames;
- bool IsMissingFiles;
- std::vector<std::string> AddedFiles;
- std::string DefaultArtifactDir;
- typedef std::map<std::string, ToolSources> ToolSourceMap;
- ToolSourceMap Tools;
- std::string GetCMakeFilePath(const char* name) const;
- };
- #endif
|