cmVisualStudio10TargetGenerator.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 WriteCustomCommand(cmSourceFile* sf);
  63. void WriteGroups();
  64. void WriteProjectReferences();
  65. bool OutputSourceSpecificFlags(cmSourceFile* source);
  66. void AddLibraries(cmComputeLinkInformation& cli, std::string& libstring);
  67. void WriteLibOptions(std::string const& config);
  68. void WriteEvents(std::string const& configName);
  69. void WriteEvent(const char* name, std::vector<cmCustomCommand> & commands,
  70. std::string const& configName);
  71. void ComputeObjectNames();
  72. void WriteGroupSources(const char* name,
  73. std::vector<cmSourceFile*> const& sources,
  74. std::vector<cmSourceGroup>& );
  75. private:
  76. std::string ModuleDefinitionFile;
  77. std::string PathToVcxproj;
  78. cmTarget* Target;
  79. cmMakefile* Makefile;
  80. std::string Platform;
  81. std::string GUID;
  82. std::string Name;
  83. cmGlobalVisualStudio7Generator* GlobalGenerator;
  84. cmGeneratedFileStream* BuildFileStream;
  85. cmLocalVisualStudio7Generator* LocalGenerator;
  86. std::set<cmSourceFile*> SourcesVisited;
  87. };
  88. #endif