Introduce "generator expressions" to add_test()
[cmake.git] / Source / cmVisualStudio10TargetGenerator.h
blob9e54f546b5daf7d191e285046589425b7c86b651
1 /*=========================================================================
3 Program: CMake - Cross-Platform Makefile Generator
4 Module: $RCSfile: cmVisualStudio10TargetGenerator.h,v $
5 Language: C++
6 Date: $Date: 2009-07-13 20:58:24 $
7 Version: $Revision: 1.6 $
9 Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
10 See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
12 This software is distributed WITHOUT ANY WARRANTY; without even
13 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 PURPOSE. See the above copyright notices for more information.
16 =========================================================================*/
17 #ifndef cmVisualStudioTargetGenerator_h
18 #define cmVisualStudioTargetGenerator_h
19 #include "cmStandardIncludes.h"
21 class cmTarget;
22 class cmMakefile;
23 class cmGeneratedFileStream;
24 class cmGlobalVisualStudio7Generator;
25 class cmSourceFile;
26 class cmCustomCommand;
27 class cmLocalVisualStudio7Generator;
28 class cmComputeLinkInformation;
29 #include "cmSourceGroup.h"
31 class cmVisualStudio10TargetGenerator
33 public:
34 cmVisualStudio10TargetGenerator(cmTarget* target,
35 cmGlobalVisualStudio7Generator* gg);
36 ~cmVisualStudio10TargetGenerator();
37 void Generate();
38 // used by cmVisualStudioGeneratorOptions
39 void WritePlatformConfigTag(
40 const char* tag,
41 const char* config,
42 int indentLevel,
43 const char* attribute = 0,
44 const char* end = 0,
45 std::ostream* strm = 0
48 private:
49 void ConvertToWindowsSlash(std::string& s);
50 void WriteString(const char* line, int indentLevel);
51 void WriteProjectConfigurations();
52 void WriteProjectConfigurationValues();
53 void WriteCLSources();
54 void WriteObjSources();
55 void WritePathAndIncrementalLinkOptions();
56 void WriteItemDefinitionGroups();
57 void WriteClOptions(std::string const& config,
58 std::vector<std::string> const & includes);
59 void WriteRCOptions(std::string const& config,
60 std::vector<std::string> const & includes);
61 void WriteLinkOptions(std::string const& config);
62 void WriteMidlOptions(std::string const& config,
63 std::vector<std::string> const & includes);
64 void OutputIncludes(std::vector<std::string> const & includes);
65 void OutputLinkIncremental(std::string const& configName);
66 void WriteCustomRule(cmSourceFile* source,
67 cmCustomCommand const & command);
68 void WriteCustomCommands();
69 void WriteGroups();
70 void WriteProjectReferences();
71 bool OutputSourceSpecificFlags(cmSourceFile* source);
72 void AddLibraries(cmComputeLinkInformation& cli, std::string& libstring);
73 void WriteLibOptions(std::string const& config);
74 void WriteEvents(std::string const& configName);
75 void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
76 std::string const& configName);
77 void ComputeObjectNames();
78 void WriteGroupSources(const char* name,
79 std::vector<cmSourceFile*> const& sources,
80 std::vector<cmSourceGroup>& );
81 private:
82 std::string ModuleDefinitionFile;
83 std::string PathToVcxproj;
84 cmTarget* Target;
85 cmMakefile* Makefile;
86 std::string Platform;
87 std::string GUID;
88 std::string Name;
89 cmGlobalVisualStudio7Generator* GlobalGenerator;
90 cmGeneratedFileStream* BuildFileStream;
91 cmLocalVisualStudio7Generator* LocalGenerator;
94 #endif