cmVisualStudio10TargetGenerator.h 3.3 KB

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