cmVisualStudio10TargetGenerator.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*============================================================================
  2. CMake - Cross Platform Makefile Generator
  3. Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
  4. Distributed under the OSI-approved BSD License (the "License");
  5. see accompanying file Copyright.txt for details.
  6. This software is distributed WITHOUT ANY WARRANTY; without even the
  7. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the License for more information.
  9. ============================================================================*/
  10. #ifndef cmVisualStudioTargetGenerator_h
  11. #define cmVisualStudioTargetGenerator_h
  12. #include "cmStandardIncludes.h"
  13. class cmTarget;
  14. class cmMakefile;
  15. class cmGeneratedFileStream;
  16. class cmGlobalVisualStudio7Generator;
  17. class cmSourceFile;
  18. class cmCustomCommand;
  19. class cmLocalVisualStudio7Generator;
  20. class cmComputeLinkInformation;
  21. #include "cmSourceGroup.h"
  22. class cmVisualStudio10TargetGenerator
  23. {
  24. public:
  25. cmVisualStudio10TargetGenerator(cmTarget* target,
  26. cmGlobalVisualStudio7Generator* gg);
  27. ~cmVisualStudio10TargetGenerator();
  28. void Generate();
  29. // used by cmVisualStudioGeneratorOptions
  30. void WritePlatformConfigTag(
  31. const char* tag,
  32. const char* config,
  33. int indentLevel,
  34. const char* attribute = 0,
  35. const char* end = 0,
  36. std::ostream* strm = 0
  37. );
  38. private:
  39. void ConvertToWindowsSlash(std::string& s);
  40. void WriteString(const char* line, int indentLevel);
  41. void WriteProjectConfigurations();
  42. void WriteProjectConfigurationValues();
  43. void WriteCLSources();
  44. void WriteObjSources();
  45. void WritePathAndIncrementalLinkOptions();
  46. void WriteItemDefinitionGroups();
  47. void WriteClOptions(std::string const& config,
  48. std::vector<std::string> const & includes);
  49. void WriteRCOptions(std::string const& config,
  50. std::vector<std::string> const & includes);
  51. void WriteLinkOptions(std::string const& config);
  52. void WriteMidlOptions(std::string const& config,
  53. std::vector<std::string> const & includes);
  54. void OutputIncludes(std::vector<std::string> const & includes);
  55. void OutputLinkIncremental(std::string const& configName);
  56. void WriteCustomRule(cmSourceFile* source,
  57. cmCustomCommand const & command);
  58. void WriteCustomCommands();
  59. void WriteCustomCommand(cmSourceFile* sf);
  60. void WriteGroups();
  61. void WriteProjectReferences();
  62. bool OutputSourceSpecificFlags(cmSourceFile* source);
  63. void AddLibraries(cmComputeLinkInformation& cli, std::string& libstring);
  64. void WriteLibOptions(std::string const& config);
  65. void WriteEvents(std::string const& configName);
  66. void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
  67. std::string const& configName);
  68. void ComputeObjectNames();
  69. void WriteGroupSources(const char* name,
  70. std::vector<cmSourceFile*> const& sources,
  71. std::vector<cmSourceGroup>& );
  72. private:
  73. std::string ModuleDefinitionFile;
  74. std::string PathToVcxproj;
  75. cmTarget* Target;
  76. cmMakefile* Makefile;
  77. std::string Platform;
  78. std::string GUID;
  79. std::string Name;
  80. cmGlobalVisualStudio7Generator* GlobalGenerator;
  81. cmGeneratedFileStream* BuildFileStream;
  82. cmLocalVisualStudio7Generator* LocalGenerator;
  83. std::set<cmSourceFile*> SourcesVisited;
  84. };
  85. #endif